2013-07-04 77 views
0

在應用程序退出前我無法進行清理 - 我的清理在其他重要事件發生之前調用。Qt和應用程序終止前的清理

目前我使用

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

我的應用程序由一個單一的QtGui.QDialog的,拋出SIGNAL("accepted()")SIGNAL("rejected()")(確定或取消按鈕)。如果我按照上面所示進行清理,我會錯過這些事件。如果我在SIGNAL("aboutToQuit()")上進行清理,我不會錯過這些事件。

我無法發現任何兩個信號的有意義的文檔。例如PySide關於aboutToQuitlastWindowClosed的文檔討論了一些filepths,並且沒有涉及應用程序的生命週期。

看來我需要使用aboutToQuit()。我在哪裏可以找到關於此信號的有意義的文檔,以確保在它之前沒有錯過任何事件?

+2

看看標準的python模塊[atexit](http://docs.python.org/2/library/atexit.html)。可能你可以使用它並且不需要PyQt信號/函數。 – TobiMarg

+0

「miss events」是什麼意思?如果您需要處理2個信號,請將它們都連接到插槽。兩個插槽都會被調用。或者你擔心信號順序? –

+0

@Riateche,是的,我擔心信號順序。其中一個信號觸發一些處理,而另一個清除即破壞處理對象。 – Vorac

回答

1

QCoreApplication::aboutToQuitdocumentation page:如果你的應用程序必須做一些最後一秒清理

的信號是非常有用的。請注意,在這種狀態下不能進行用戶交互。

所以如果你想做清理,應該使用這個信號。

當所有窗口關閉時,lastWindowClosed信號發出。它不一定會導致應用程序終止。並且無法保證在應用程序終止時發出此信號(例如,使用QApplication::quit以編程方式關閉應用程序時不會發出此信號)。

+0

+1謝謝。這正是我需要知道的。奇怪的是我沒有找到那份文件。 – Vorac