多线程QTreeView添加节点问题

sky_163 2019-02-16 04:12:10

QStandardItem* itemProject = new QStandardItem("节点名");

QMetaObject::invokeMethod(Public::model_TreeFile, "appendRow", Qt::AutoConnection, Q_ARG(QStandardItem*,itemProject));

在工作线程中上面这段代码怎么加不上节点。 但我如果改成下面的代码就可以正常添加上节点(由于需要加入大量节点,这种方法会有卡顿现象,所以想用上面的方法,请问哪里出错了)

QStandardItem* itemProject = new QStandardItem("节点名");

Public::model_TreeFile->appendRow(itemProject);
...全文
291 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
sky_163 2019-02-18
  • 打赏
  • 举报
回复
谢谢指导,我先看看。
弓人水 2019-02-18
  • 打赏
  • 举报
回复
上面那种方法加不上节点的原因:QMetaObject::invokeMethod只能用于槽函数或者声明为Q_INVOKABLE的公共函数,appendRow看下帮助就知道了,只是个普通公共函数,无法使用invokeMethod去触发调用。
如果要用的话,需要自己扩展一下,在自己扩展定义的槽函数中去调用appendRow方法即可。
sky_163 2019-02-18
  • 打赏
  • 举报
回复
你好,我刚刚用QMetaObject::invokeMethod先调用自己定义的槽函数,然后在槽函数中用Public::model_TreeFile->appendRow(itemProject);添加节点。但是效果还是差不多。添加大量节点名时程序窗口会卡死。请问有什么办法在QTreeView添加大量节点时窗口不卡?

16,202

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧