我是Qt的新手
我的情况是:出于某种原因,我必须从主线程发出心跳信号,同时我想使用以下命令创建一个QMessageBox窗口:
reply = QMessageBox::question(this, tr("Sure want to quit?"), tr("Sure quit?"), QMessageBox::Yes|QMessageBox::No);
我只是希望此消息框阻止用户从其他窗口输入,但我不想阻止心跳信号。 我该怎么做?或者这是在Qt中默认完成的吗?
答案 0 :(得分:3)
QMessageBox :: question在内部执行事件循环。所以一切都在继续。你不必担心这个。
然而,你可以使用这些功能获得奇怪的效果。例如。如果你的心跳可以打开一个对话框,即使另一个对话框已经打开,对话框也会打开。 还可以想象你有一个TCP / IP堆栈在运行。这个堆栈可以做的所有事情将继续发生......无论QMessageBox :: question()当前是执行的......就像在某个函数的中间一样。
这就是为什么我们公司的政策禁止使用QMessageBox :: question()(和类似的)并在我们的应用程序中的对话框上调用exec()。我们正在堆上创建模态对话框,而不是使用它们的信号。