我试图使用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) (对吗?)
那么,如何从mimeData中获得item (这将是从普通拖动中自动打包的),以便将其放入dropMimeData的函数调用中?
发布于 2020-06-19 19:54:35
我认为您不能使用QTableWidget::dropMimeData(row,col,mimeData,action),因为它是受保护的。
在我看来,您可以使用QVariant QTreeWidgetItem::data(int column, int role) const来获取树节点。之后,您可以使用QTableWidget::setItem(int row, int column, QTableWidgetItem *item)插入一个新项。
这是文档中的一个示例,演示如何向表中插入新行:
QTableWidgetItem *newItem = new QTableWidgetItem(tr("%1").arg(
(row+1)*(column+1)));
tableWidget->setItem(row, column, newItem);发布于 2020-06-19 19:53:45
这样做的方法是在drop事件中
void MyWidget::dropEvent(QDropEvent* e)
{
const QMimeData* mimeData = e->mimeData();
...https://stackoverflow.com/questions/62476662
复制相似问题