0
我是新来的QtQMessageBox会阻塞Qt中整个主线程的运行吗?
我的情况是:由于某些原因,我不得不发出从主线程心跳信号,在同一时间,我想用来创建一个QMessageBox提示窗口:
reply = QMessageBox::question(this, tr("Sure want to quit?"), tr("Sure quit?"), QMessageBox::Yes|QMessageBox::No);
我只是想让这个消息框阻止来自其他窗口的用户输入,但我不想阻止心跳信号。 我该怎么做?或者这是默认在Qt中完成的?
在我的情况下,将“调用对话框上的exec()”停止心跳信号?你能举一个简单的例子来说明你的公司是如何完成的,非常感谢。 – Nyaruko 2014-10-22 08:10:45
@Nyaruko不,'QDialog :: exec'做同样的事情。它创建一个本地事件循环。本地事件循环可能会很糟糕。你可以阅读[这篇文章](https://blogs.kde.org/2009/03/26/how-crash-almost-every-qtkde-application-and-how-fix-it-0)来找出原因。 – thuga 2014-10-22 08:18:42
最值得注意的是在本地事件循环中没有做的是deleteLater执行。正是为了防止'this'得到'delete'd崩溃。 (如果你实际上'删除'父母,但是如果你使用'deleteLater',它将不会帮助你。 – 2014-10-22 09:09:56