首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检索QTreeWidget中特定项的QTreeWidget?

如何检索QTreeWidget中特定项的QTreeWidget?
EN

Stack Overflow用户
提问于 2020-06-19 18:41:32
回答 2查看 358关注 0票数 1

我试图使用QTableWidget以编程的方式将一个项“放到”一个QTableWidget::dropMimeData().上。

我知道我想删除哪一项,并且我知道QTreeWidget有一个QTreeWidget::mimeData()函数,但是我不能使用这个mimeData()函数,因为它是受保护的。

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

谢谢。

就实际代码而言:

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

代码语言:javascript
运行
复制
   QTreeWidgetItem *item = ui->treeWidget->child(i)->child(j)->child(k);

给我我的QTreeWidgetItem。

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

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

那么,如何从mimeData中获得item (这将是从普通拖动中自动打包的),以便将其放入dropMimeData的函数调用中?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 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)插入一个新项。

这是文档中的一个示例,演示如何向表中插入新行:

代码语言:javascript
运行
复制
QTableWidgetItem *newItem = new QTableWidgetItem(tr("%1").arg(
        (row+1)*(column+1)));
tableWidget->setItem(row, column, newItem);
票数 0
EN

Stack Overflow用户

发布于 2020-06-19 19:53:45

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

代码语言:javascript
运行
复制
 void MyWidget::dropEvent(QDropEvent* e)
 {
      const QMimeData* mimeData = e->mimeData();
      ...
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62476662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档