c++ - 如何在QTreeWidget中检索特定项目的mimeData?

标签 c++ qt qtreewidget qtreewidgetitem

我正在尝试使用QTableWidget以编程方式将项目“拖放”到QTableWidget::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的函数调用中?

最佳答案

我认为您不能使用QTableWidget::dropMimeData(row,col,mimeData,action),因为它受到了保护。

我认为,您可以使用QVariant QTreeWidgetItem::data(int column, int role) const来获取树节点。之后,您可以使用QTableWidget::setItem(int row, int column, QTableWidgetItem *item)插入新项目。

这是documentation的示例,显示了如何在表中插入新行:

QTableWidgetItem *newItem = new QTableWidgetItem(tr("%1").arg(
        (row+1)*(column+1)));
tableWidget->setItem(row, column, newItem);

关于c++ - 如何在QTreeWidget中检索特定项目的mimeData?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62476662/

相关文章:

c++ - 防止翻译文件被 Makefile 清理

Qt 小部件调整为宽度 = 256,而它不应该

python - PyQt [QTreeWidget] : How to add Radiobutton for items?

python - 在 QTreeWidget 中升高和降低 QTreeWidgetItem?

c++ - 控制台应用程序和图形界面之间的交互类型

c++ - 在程序中包含图形界面

c++ - 如果我从未实际使用引用,那么引用越界数组元素是否安全?

c++ - 快速时间函数 C/C++

macos - 从 Qt 创建者中构建时,qmake 找不到 opencv 包

c++ - 在构造函数中初始化私有(private)成员