2013-07-04 3 views
0

У меня возникли проблемы с очисткой непосредственно перед завершением работы приложения - моя очистка вызывается до того, как произойдут другие важные события.Qt и очистка непосредственно перед завершением приложения

В настоящее время я использую

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

Мое приложение состоит из одного QtGui.QDialog, что бросает SIGNAL("accepted()") или SIGNAL("rejected()") (OK или Отмена кнопки). Если я сделаю очистку, как показано выше, я пропущу эти события. Если я сделаю очистку на SIGNAL("aboutToQuit()"), я не пропущу эти события.

Я не могу найти значимую документацию по любому из двух сигналов. Например, документация PySide по aboutToQuit и lastWindowClosed рассказывает о некоторых файлах и ничего не связано с временем жизни приложения.

Похоже, что мне нужно использовать 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