【发布时间】:2013-12-21 11:39:25
【问题描述】:
我有一个允许用户定义模型列表的 QT 应用程序。定义的每个模型都创建了一个相当复杂的小部件类。目前,这一切都在主(GUI)线程中完成。该程序可以正常使用,但我试图通过创建 200 到 1000 个模型来对其进行压力测试,并且创建 GUI 需要很长时间(20 秒到几分钟)。
我尝试了几次尝试使用 QtConcurrent::run 将工作线程化,但程序总是抱怨,因为“必须在 GUI 线程中创建小部件。”
我在 SO:How do I create a Window in different QT threads? 上找到了这个答案。但这在新线程中似乎并没有做太多,除了告诉主线程创建一个新的小部件。据我所知,这不会分配工作量。
说了这么多,我有几个直接的问题:
1) 有没有比遍历我的模型列表并连续创建每个小部件更好的设计(更快的性能)?
2)如果这个过程可能是多线程的,有人可以指出一个简单示例的方向吗?
【问题讨论】:
-
更好的设计是在需要时创建小部件...您实际上有多少小部件一次可见?你的意思是什么型号? QAbstractItemModel 的子类还是什么?
-
感谢您的意见!一次只能看到一个小部件。有一个树形视图可用于选择您希望在给定时间显示的小部件。仅在需要时显示它们可能会起作用,但是如果有人要一次滚动浏览所有模型,我会担心动态加载它们。
标签: c++ multithreading qt