我已经创建了一个QTreeWidget的子类,我希望能够从另一个树小部件中拖动项目(我想自己处理插件),以及从QListWidget中。
我已经覆盖了我的类中的dropEvent方法,看起来我从QTreeWidget得到的数据的mimetype是application / x-qabstractitemmodeldatalist,如何解码这个以从树中获取项目出?
答案 0 :(得分:23)
您可以按如下方式对其进行解码:
QByteArray encoded = qMimeData->data("application/x-qabstractitemmodeldatalist");
QDataStream stream(&encoded, QIODevice::ReadOnly);
while (!stream.atEnd())
{
int row, col;
QMap<int, QVariant> roleDataMap;
stream >> row >> col >> roleDataMap;
/* do something with the data */
}
QMap<int, QVariant>
是QAbstractItemModel::itemData(index)
针对代表(row, col)
的索引返回的内容。
答案 1 :(得分:3)
看起来您可以使用QStandardItemModel来解码数据并将项目退出。不知道这是否是最好的方法:
model = QStandardItemModel()
model.dropMimeData(event.mimeData(), Qt.CopyAction, 0,0, QModelIndex())
然后你可以使用model中的item()方法检索项目并随意处理它。
答案 2 :(得分:0)
在PySide2中,这对我有用
block { subject.total_batch_jobs }