如何检测QDialog.exec()是否处于活动状态

时间:2014-01-30 13:46:54

标签: qt

有没有办法检测执行当前是否在QDialog.exec()的中间?

我是DreamPie的作者,这是一个Python shell,它允许您在显示Qt GUI时运行Python代码。它通过运行Qt事件循环1/10秒,然后检查是否需要执行任何Python命令来实现。事件循环由QTimer停止,QTimer在超时后调用QApplication.quit()。

但是,如果QDialog.exec()处于活动状态,我不想调用QApplication.quit(),因为它会破坏代码。当前的解决方案是通过检查QAp​​plication.activeModalWidget()是否为None来检查是否有活动的模式对话框。但是,我目前有一个模态对话框,它不能与QDialog.exec()一起运行,它无缘无故地阻止Python命令。

有没有办法在QDialog.exec()没有递归调用的情况下退出事件循环?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以使用QDialog.isVisible检查对话框是否可见。通常,模态对话框仅在执行时才可见。