【问题标题】:Qt and cleanup just before the application terminates应用程序终止前的 Qt 和清理
【发布时间】:2013-07-05 17:25:28
【问题描述】:

我无法在应用程序退出前进行清理 - 我的清理在其他重要事件发生之前被调用。

目前我正在使用

QObject.connect(self.qtApp,
                SIGNAL("lastWindowClosed()"),
                self._lastWindowClosed)

我的应用程序包含一个 QtGui.QDialog,它会抛出 SIGNAL("accepted()")SIGNAL("rejected()")(确定或取消按钮)。如果我如上所示进行清理,我会错过这些事件。如果我对 SIGNAL("aboutToQuit()") 进行清理,我不会错过这些活动。

我未能找到关于这两个信号中任何一个的有意义的文档。例如,PySide 在 aboutToQuitlastWindowClosed 上的文档讨论了一些文件,与应用程序的生命周期无关。

看来我需要使用 aboutToQuit()。我在哪里可以找到有关此信号的有意义的文档,以确保在此之前不会错过任何事件?

【问题讨论】:

  • 看看标准的python模块atexit。可能你可以使用它并且不需要 PyQt 信号/函数。
  • “错过事件”是什么意思?如果您需要处理 2 个信号,请将它们都连接到插槽。两个插槽都将被调用。还是您担心信号顺序?
  • @Riateche,是的,我担心信号顺序。其中一个信号触发一些处理,而另一个则清除,即销毁处理对象。

标签: python qt signals pyqt4


【解决方案1】:

QCoreApplication::aboutToQuitdocumentation page

如果您的应用程序必须在最后一秒进行清理,该信号特别有用。请注意,在此状态下无法进行任何用户交互。

所以如果你想进行清理,应该使用这个信号。

lastWindowClosed 信号在所有窗口关闭时发出。它不一定会导致应用程序终止。并且不能保证在应用程序终止时发出此信号(例如,使用QApplication::quit 以编程方式关闭应用程序时不会发出此信号)。

【讨论】:

  • +1 谢谢。这正是我需要知道的。奇怪的是我没有找到那篇文档。
猜你喜欢
  • 2012-11-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-23
  • 1970-01-01
  • 1970-01-01
  • 2016-01-10
相关资源
最近更新 更多