我的程序的主线程(函数 main 在那里)是为非 GUI 任务保留的。它调用了许多冗长的计算函数。所有实现的 GUI 都在单独的线程中完成其工作。
我现在将使用 Qt 实现另一个 GUI。Qt 文档说所有与 GUI 相关的任务都应该在主线程中完成。
就我而言,在主线程中插入偶尔的 QCoreApplication::processEvents() 调用实际上是没有用的,因为它们之间存在很大的延迟。
有什么办法可以克服Qt的这个限制吗?
Qt 程序的主线程中是否无法执行与 GUI 无关的操作?
不,您应该在单独的线程中进行计算。正如您已经提到的,有一个解决方法可用QCoreApplication::processEvents()
,但听起来你无法让它为你工作。
如果您不想完成设置 QThread 和移动所有代码的所有工作,您可能会发现QtConcurrent::运行函数很有用 - 它允许您异步运行函数。
几点提示:您应该尝试使主(GUI)线程尽可能轻松。大量的 IO 或计算应该使用 QtConcurrent::run 异步完成,或者在单独的 QThread 中运行。根据代码的复杂性,您也许可以使用 QtConcurrent 方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)