如何在Qt中解码“application / x-qabstractitemmodeldatalist”进行拖放?

时间:2009-11-12 17:31:54

标签: qt qt4

我已经创建了一个QTreeWidget的子类,我希望能够从另一个树小部件中拖动项目(我想自己处理插件),以及从QListWidget中。

我已经覆盖了我的类中的dropEvent方法,看起来我从QTreeWidget得到的数据的mimetype是application / x-qabstractitemmodeldatalist,如何解码这个以从树中获取项目出?

3 个答案:

答案 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 }