我有一个带有简单文本行的 QListWidget。我想对其进行设置,以便用户可以将此数据拖放到某些 QLineEdit 对象中。
我已经为这两种类型打开了拖放功能,但它不允许我从 QListWidget 拖放到 QLineEdit。但是,它确实允许我从一个 QLineEdit 拖动到另一个 QLineEdit。
到目前为止我还没有重新实现任何方法。我所做的就是在编辑 View 中打开拖放功能。
如何启用从 QListWidget 到 QLineEdit 的拖放?我需要重新实现哪些方法?
谢谢
最佳答案
我明白了。
仅供引用:
您需要子类化QLineEdit并重新实现dragEnterEvent和dropEvent。
void MyLineEdit::dragEnterEvent(QDragEnterEvent *e){
if(e->mimeData()->hasFormat("application/x-qabstractitemmodeldatalist")){
e->acceptProposedAction();
}
}
void MyLineEdit::dropEvent(QDropEvent *e){
QByteArray encoded = e->mimeData()->data("application/x-qabstractitemmodeldatalist");
QDataStream strm(&encoded, QIODevice::ReadOnly);
while(!strm.atEnd()){
int row, col;
QMap<int, QVariant> data;
strm >> row >> col >> data;
this->setText(data[0].toString());
}
}
关于qt - 从 QListWidget 拖放到 QLineEdit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17714319/