我正在寻找有关在调用Qt应用程序的quit()之后/之后发生的事情的文档。问题源于我在quit()上处理开放QDialogs的返回值时遇到的问题。我想澄清以下顺序:
所以程序流程是: 只要打开模式对话框,就会运行此对话框的事件循环。当quit()被调用时,QDialog :: exec()(模式对话框的事件循环)返回,这可能意味着运行了许多额外的代码,甚至当信号/插槽位于同一个线程时也可以执行。然后不再处理正常的事件循环,只需要调用ToTuit()和析构函数。
这个描述是否正确?有人能指出我解释quit()和QDialog交互的Qt文档吗?当由于quit()调用而返回QDialog的exec()之后我调用QDialog的exec()时会发生什么?那么谁将关闭这个QDialog?
谢谢,我对所有这些互动感到有些困惑。
编辑:如果之前调用了quit()方法,则会拒绝调用QDialog的exec()。所以我猜Qt内部知道应用程序即将退出所以所有进一步的QDialog返回"拒绝"立即
答案 0 :(得分:1)
我不确定你的意思"没有为QDialogs调用closeEvent"因为这就是它调用reject()
:QDialog::closeEvent() code
至于各种exec()
和quit()
之间的互动:
QDialog::exec()
使用嵌套的QEventLoop
:QDialog::exec() code QCoreApplication::quit()
遍历所有嵌套的事件循环,告诉他们退出:QCoreApplication::exec() code 答案 1 :(得分:0)
对我而言,所有开放式对话都必须被拒绝"这似乎是合乎逻辑的。在主程序可以关闭之前。 (这应该是一个评论,但我还没有足够的代表>。<)。