Найти - Пользователи
Полная версия: PyQT4 Закрытие дочерних окон
Начало » GUI » PyQT4 Закрытие дочерних окон
1
annndrey
Добрый вечер.

Ситуация такова. Есть главное окно, есть несколько форм. В общем и целом главное окно и формы сгенерированы QtDesigner, потом доделаны руками.

Вначале показывается главное окно, из него можно вызввать формы.

Проблема в том, что после закрытия главного окна вызванные формы остаются висеть, пока хи не закроют. Хотелось бы услышать совет, как сделать так, чобы дочерние формы
автоматически закрывались после закрытия главного окна.

Спасибо.
dartNNN
Можно сделать на основе mdi примера (там дочерние окна внутри основного, и делается все это через QMdiArea) если конечно подойдет. А если нет, то надо в этом примере mdiArea заменить, например, на простой список и самому написать функцию closeAllSubWindow(), где пробегать по списку и закрывать все окна (метод close()).
Вот как-то так.
pasaranax
Ты, наверное, создаешь дочерние окна, как обычные виджеты без указания родителя?
Есть несколько путей:
1. Как сказал dartNNN, вести список окон и у родителя в closeEvent прописать их закрытие
2. Делать дочерние окна модальными (метод setModal()), чтобы они блокировали приложение, пока их вручную не закроешь
3. Использовать вместо QWidget QDialog и прописывать им родителя, тогда при закрытии родителя диалоги будут тоже закрываться. Предпочтительный метод, имхо.
Zubchick
у любого виджета есть родитель, достаточно его указать чтобы при закрытии родителя остальные тоже закрывались.

вот посмотри примеры метод showAboutWindow http://bitbucket.org/zubchick/madmodeller/src/tip/forms/MainForm.py#cl-243 , http://bitbucket.org/zubchick/madmodeller/src/tip/forms/about.py. Это были мои первые пробы пера, так что посмотри тока на идею)
annndrey
Большое спасибо!
Разобрался. В методе closeEvent главного окна закрываю все дочерние окна.

Хотя, наверное, стоит потом попробовать переделать их в диалоги.
Но т.к. их не очень много, наверное оставлю список дочерних окон, которые необходимо закрывать при закрытии главного.
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