我的用户界面使用QTreeView和QFileSystemModel来选择文件夹和文件。 QFileSystemModel的文档说文件结构更新是在单独的线程上完成的,这意味着UI不会被阻塞。然而,对我来说情况并非如此,我无法弄清楚这种差异以及其他人没有遇到这个问题。在调试之后,我注意到大部分时间的QFileSystemModel _q_fileSystemChanged插槽仍然在主UI线程上执行,这是合理的。问题是文档如何宣称它不会阻止用户界面。有解决方案吗?我误解了什么吗?QT:QFileSystemModel _q_fileSystemChanged插槽在与文档相矛盾的UI线程上执行
要REPRO - 与QFileSystemDataModel 创建QTreeView则 - 设置根路径 “” 或 “/” - 设置断点QFileSystemModel _q_fileSystemChanged时隙 - 展开驱动器的一个应用程序加载后
问题: - 插槽在UI线程上调用,从而阻止应用程序,直到完成。
有办法让文件解析器更快,但是我真的需要在单独的线程上执行并通知数据何时填充并准备好用于QTreeView。
感谢, Innokenty
当不用断点调试时,你的应用程序实际上是否冻结? – 2010-10-29 21:01:06
是的。它在映射网络共享上大部分和非常显着,因为它必须查询每个项目。对于映射驱动器和常规驱动器,代码路径是相同的。 – Innokenty 2010-10-29 21:12:28