我正在尝试使用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/