QT内部拖放QTreeWidget

时间:2019-10-04 15:38:56

标签: qt

我对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

0 个答案:

没有答案
相关问题