How to decode "application/x-qabstractitemmodeldatalist" in Qt for drag and drop?

Looks like you can use QStandardItemModel to decode the data and get an item back out. Don't know if this is the best way to do it though:

  model = QStandardItemModel()
  model.dropMimeData(event.mimeData(), Qt.CopyAction, 0,0, QModelIndex())

Then you can use the item() method from model to retrieve the item and handle it however you want.


You can decode it as follows:

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 */
}

The QMap<int, QVariant> is what is returned by QAbstractItemModel::itemData(index) for the index representing (row, col).

Tags:

Qt

Qt4