【发布时间】:2011-05-02 15:03:30
【问题描述】:
我的 UI 使用 QTreeView 和 QFileSystemModel 来选择文件夹和文件。 QFileSystemModel 的文档说文件结构更新是在单独的线程上完成的,这意味着 UI 不会被阻塞。但是,对我来说不是这种情况,我无法弄清楚差异以及其他人如何没有遇到这个问题。调试后,我注意到占用大部分时间的 QFileSystemModel _q_fileSystemChanged 插槽仍然在主 UI 线程上执行,这是有道理的。问题g是文档如何声称它不会阻止用户界面。有解决办法吗?我是不是误会了什么?
复制 - 使用 QFileSystemDataModel 创建一个 QTreeView - 将根路径设置为“”或“/” - 在 QFileSystemModel _q_fileSystemChanged 槽中设置断点 - 应用加载后展开其中一个驱动器
问题: - 在 UI 线程上调用插槽,从而阻塞应用程序直到它完成。
有一些方法可以使文件解析器更快,但我确实需要在单独的线程上执行并在数据填充并准备好 QTreeView 时通知。
谢谢, 天真无邪
【问题讨论】:
-
在不使用断点调试时,您的应用程序是否真的死机了?
-
是的。它在映射的网络共享上非常明显,因为它必须查询每个项目。映射驱动器和常规驱动器的代码路径相同。
标签: multithreading qt user-interface qtreeview qfilesystemmodel