【发布时间】:2015-11-06 19:25:04
【问题描述】:
我正在使用 Qt Creator 开发 Qt 5.5。 我有一个名为 settingsWindow 的大类,顾名思义,它负责各种设置。然后这些设置用于启动一些 QDialogs,这些 QDialogs 在 qGraphicsView 内的场景上显示非常复杂的动画,通过 QCoreApplication::processEvents() 不断更新,这反过来又保持 GUI 响应。动画是通过 QDialog 的 start() 方法启动的。 我想同时运行这些 QDialogs,例如通过一个按钮 start 来同时启动它们。我尝试使用包装器,即从 QObject 继承的简单类,每次将其分配给不同的线程,但如果我启动 QDialog 一切正常,当我启动第二个时,第一个“块”(动画停止并且仅在第二个 Qdialog 中动画可见)。 我唯一的解决方案是为它们中的每一个启动一个单独的 QProcess(这样我可以确定它们分别运行并且在不同的线程上),但我需要重写逻辑(每个 QDialog 的单独程序)。
有更简单的解决方案吗?提前谢谢你。
【问题讨论】:
-
如何显示对话框?你打电话给
QDialog::exec()吗? -
我调用
QDialog::show(),然后调用name_of_the_dialog->start(),开始动画。
标签: c++ multithreading qt qdialog