首页 > 解决方案 > 如何检索 QTreeWidget 中特定项目的 mimeData?

问题描述

我正在尝试以编程方式将项目“拖放”到QTableWidgetusingQTableWidget::dropMimeData().

我知道我要删除哪个项目,并且我知道它QTreeWidget有一个QTreeWidget::mimeData()功能,但我不能使用该mimeData()功能,因为它受到保护。

基本上,我怎样才能“选择”一个 QTreeWidgetItem,打包它的 mimeData,然后以编程方式将该项目“拖放”到 QTableWidget 上(没有实际的鼠标拖放)?

谢谢你。


至于实际代码:

假设我有一个具有 3 个“级别”的 QTreeWidget

   QTreeWidgetItem *item = ui->treeWidget->child(i)->child(j)->child(k);

给我我的 QTreeWidgetItem。

现在假设我想以item编程方式放到我的 QTableWidget 上。

我需要使用QTableWidget::dropMimeData(row,col,mimeData,action) (对吗?)

那么我如何从item(从正常拖动中自动打包)获取 mimeData,以便我可以将它放入函数调用中dropMimeData

标签: c++qtqtreewidgetqtreewidgetitem

解决方案


这样做的方法是在 drop 事件中

 void MyWidget::dropEvent(QDropEvent* e)
 {
      const QMimeData* mimeData = e->mimeData();
      ...

推荐阅读