【发布时间】:2018-07-27 15:31:55
【问题描述】:
在 QML 中,您可以使用 Animator 类型来“在场景图的渲染线程上进行动画处理,即使 UI 线程被阻塞。”
如何为 Qt Widgets 实现相同的功能?
基本上,我想要这样的东西:
1) start loading screen / splash-screen
2) start GUI-blocking operation
3) stop loading screen / splash-screen
无法将 ui-blocking 操作移至单独的线程(正在创建小部件)。我无法修改这部分。
我尝试了 QQuickWidget 和 QQuickView 包含带有 Animator 的初始屏幕场景,但它不起作用 - 它们也被阻止了。
编辑:在单独的线程中,我阅读了包含 UI 描述的文件。然后我递归地创建数百个小部件(包括 QQuickWidgets、图像的 QLabels、Web 视图等)。
问题的重点是查看是否有“解决方法”(例如,在具有自己的事件循环的某个单独窗口中显示上述 QML 场景)。不幸的是,在这一点上,对于上述的整体设计,我们无能为力。
【问题讨论】:
-
您不应阻塞 GUI 线程。如果你说阻塞任务是创建小部件,那闻起来就像一个糟糕的设计。