gpt4 book ai didi

c++ - QMessageBox会阻塞Qt中整个主线程的运行吗?

转载 作者:行者123 更新时间:2023-11-28 00:23:07 31 4
gpt4 key购买 nike

我是Qt新手

我的情况是:出于某种原因,我必须从主线程发出心跳信号,同时我想使用以下方法创建一个 QMessageBox 窗口:

reply = QMessageBox::question(this, tr("Sure want to quit?"), tr("Sure quit?"), QMessageBox::Yes|QMessageBox::No);

我只是想让这个消息框屏蔽用户从其他窗口的输入,但我不想屏蔽心跳信号。我应该怎么做?或者这是在 Qt 中默认完成的?

最佳答案

QMessageBox::question 在内部执行事件循环。所以一切都继续运行。您无需为此担心。

但是使用这些函数你会得到奇怪的效果。例如。如果您的心跳可以打开一个对话框,即使另一个对话框已经打开,该对话框也会打开。还假设您有一个正在运行的 TCP/IP 堆栈。这个堆栈可以做的一切都将继续发生……无论 QMessageBox::question() 当前执行在哪里……就像在某个函数的中间。

这就是为什么我们公司有一项政策禁止使用 QMessageBox::question()(和类似的)以及在我们的应用程序中的对话框中调用 exec()。我们正在堆上创建模态对话框并改用它们的信号。

关于c++ - QMessageBox会阻塞Qt中整个主线程的运行吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26502673/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com