我对QTreeWidget和内部移动(在节点之间移动项目)有一些问题。每当我尝试在QTreeWidget中移动一个项目时,该项目都会消失。活动
void CommonTreeWidget::dropEvent(QDropEvent *event)
被触发,但是该项目没有任何mimeData。如果我从另一个listwidget中删除一个具有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();
}
QTreeWidget的internalMove是否存在任何已知问题,或者有人知道可以在其中进行研究的好样本?
可能有帮助: macOS 10.14.5 QT 5.13.1 QTCreator 4.10.0