У меня возникли проблемы с QTreeWidget и внутренним перемещением (перемещение элементов между узлами). Каждый раз, когда я пытаюсь переместить элемент в QTreeWidget, элемент исчезает. Событие
void CommonTreeWidget::dropEvent(QDropEvent *event)
запускается, но у элемента нет mimeData. Если я удаляю элемент из другого списка, у него есть mimeData, а внутри QTreeWidget - нет. Я думаю, что это проблема.
Функции выглядят следующим образом:
void CommonTreeWidget::dropEvent(QDropEvent *event)
{
if (mProjectType == RuleManager::TYPE_PROJECT_EXPLORE)
return;
const QMimeData *mimeData = event->mimeData();
if (mimeData->hasUrls()) {
QList<QUrl> urlList = mimeData->urls();
if (urlList.size() > 0) {
QString url = urlList.at(0).path();
//QString url = urlList.at(0).toString();
#ifdef Q_OS_WIN
url = url.remove(0, 1);
#endif
QModelIndex dropIndex = indexAt(event->pos());
QDataItem *dropItem = (QDataItem*)dropIndex.internalPointer();
setSelected(dropItem);
//QString temp = mSelectedItem->text(0);
QFileInfo entry(url);
if (entry.isDir()) {
InsertNode(url);
} else if (entry.isFile()) {
QDataItem *focusItem = InsertItem(url);
setSelected(focusItem);
}
}
}
event->acceptProposedAction();
}
Есть ли какая-либо известная проблема с internalMove QTreeWidget или кто-нибудь знает хороший пример, где я могу исследовать?
Может быть полезно:macOS 10.14.5 QT 5.13.1 QTCreator 4.10.0