我的 UI 使用 QTreeView 和 QFileSystemModel 来选择文件夹和文件。QFileSystemModel 的文档说文件结构更新是在单独的线程上完成的,这意味着 UI 不会被阻塞。但是,对我来说不是这种情况,我无法弄清楚差异以及其他人如何没有遇到这个问题。调试后,我注意到占用大部分时间的 QFileSystemModel _q_fileSystemChanged 插槽仍然在主 UI 线程上执行,这是有道理的。问题g是文档如何声称它不会阻止用户界面。有解决办法吗?我是不是误会了什么?
重现 - 使用 QFileSystemDataModel 创建 QTreeView - 将根路径设置为“”或“/” - 在 QFileSystemModel _q_fileSystemChanged 插槽中设置断点 - 在应用程序加载后展开驱动器之一
问题: - 在 UI 线程上调用插槽,因此阻塞应用程序直到它完成。
有一些方法可以使文件解析器更快,但我真的需要在单独的线程上执行并在数据填充并准备好 QTreeView 时通知。
谢谢, Innokenty