Найти - Пользователи
Полная версия: pyQT4, разрушение QDialog
Начало » GUI » pyQT4, разрушение QDialog
1
The gray Cardinal
Создаю окошко своего класса, который является наследником QDialog. Вызываю окно методом exec_() в коде родительского окна, а закрываю его методом self.done() в коде самого класса диалога. После этого вызываю в коде родительского окна метод диалога destroy().

Мне показалось странным, что после вызова destroy() в коде родительского окна оказываются доступными виджеты объекта диалога (уже якобы разрушенного) и их содержимое. Так и должно быть? Что же тогда делает destroy(), и надо ли его вообще вызывать?
poltergeist
.deleteLater() лучше юзать, при этом все сигналы отсоединяются, те кому надо “проинформированы” и происходит удаление “как надо” без каких-либо конфликтов. Вызывать можно для классов, у которых есть парент. Обычно парент заботится об удалении своих чилдренов (вызывается тот же deleteLater для каждого из них).
The gray Cardinal
Всё же я не понял, чем deleteLater() лучше destroy(). Кстати, непосредственно после вызова deleteLater() виджеты объекта диалога и их содержимое тоже доступны. В справке вроде написано, что deleteLater() разрушает окно после того, как завершён цикл обработки его событий (mainloop). Метод диалога done() завершает этот цикл? Вот мой пример:
http://forum.script-coding.info/viewtopic.php?id=2466
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB