qt - 如何检测 QDialog.exec() 是否处于事件状态

标签 qt

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

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

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

有没有办法只有在没有被QDialog.exec()递归调用时才退出事件循环?

谢谢!

最佳答案

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

关于qt - 如何检测 QDialog.exec() 是否处于事件状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21458268/

相关文章:

c++ - Qt - 从主窗口显示第二个窗口

qt - 在带有 VS2008 的 Windows 上使用 QuaZip

c++ - 如何让QScrollArea根据QDialog改变大小?

qt - YouTube视频无法在QT WebView中播放

qt - 将可停靠小部件置于 Qt 中的默认位置

qt - 为什么这段代码会使 QImage 失去其 Alpha channel ?

c++ - Qt 在串口上发送完整的字节

c++ - 对于(自动 e : xxx) conflict with constructor

c++ - 抑制警告 "QApplication was not created in main() thread"

qt - 从IPLImage转换为Qt中的QImage