Добрый день!
Делаю приложение с применением drug&drop. Все замечательно, но всплыло два вопроса:
1. При startDrag делаю следующее:
QListWidgetItem *item = currentItem();
QByteArray itemData;
QDataStream dataStream(&itemData, QIODevice::WriteOnly);
QMap<int, QVariant> roleDataMap;
roleDataMap[Qt::DisplayRole] = item->data(Qt::DisplayRole);
roleDataMap[Qt::UserRole] = item->data(Qt::UserRole);
roleDataMap[Qt::UserRole+1] = item->data(Qt::UserRole+1);
roleDataMap[Qt::UserRole+2] = item->data(Qt::UserRole+2);
dataStream << this->currentRow() << 0 << roleDataMap;
Как-то можно узнать все заполненные роли item?
2. Как мне узнать, что drop прошел успешно? Дело вот в чем: у меня есть фильтр, зависящий от items в QListWidget. Но когда я вытаскиваю элемент из него, то в dropEvent генерирую свой сигнал и в законнекченом на этот сигнал слоте делаю пересчет. Но проблема в том, что в dropEvent элемент еще получается не удален, и он делает фильтр на предыдущее состояние. Как правильнее в данном случае поступить?