Форум сайта python.su
Добрый вечер.
Ситуация такова. Есть главное окно, есть несколько форм. В общем и целом главное окно и формы сгенерированы QtDesigner, потом доделаны руками.
Вначале показывается главное окно, из него можно вызввать формы.
Проблема в том, что после закрытия главного окна вызванные формы остаются висеть, пока хи не закроют. Хотелось бы услышать совет, как сделать так, чобы дочерние формы
автоматически закрывались после закрытия главного окна.
Спасибо.
Офлайн
Можно сделать на основе mdi примера (там дочерние окна внутри основного, и делается все это через QMdiArea) если конечно подойдет. А если нет, то надо в этом примере mdiArea заменить, например, на простой список и самому написать функцию closeAllSubWindow(), где пробегать по списку и закрывать все окна (метод close()).
Вот как-то так.
Офлайн
Ты, наверное, создаешь дочерние окна, как обычные виджеты без указания родителя?
Есть несколько путей:
1. Как сказал dartNNN, вести список окон и у родителя в closeEvent прописать их закрытие
2. Делать дочерние окна модальными (метод setModal()), чтобы они блокировали приложение, пока их вручную не закроешь
3. Использовать вместо QWidget QDialog и прописывать им родителя, тогда при закрытии родителя диалоги будут тоже закрываться. Предпочтительный метод, имхо.
Офлайн
у любого виджета есть родитель, достаточно его указать чтобы при закрытии родителя остальные тоже закрывались.
вот посмотри примеры метод showAboutWindow http://bitbucket.org/zubchick/madmodeller/src/tip/forms/MainForm.py#cl-243 , http://bitbucket.org/zubchick/madmodeller/src/tip/forms/about.py. Это были мои первые пробы пера, так что посмотри тока на идею)
Офлайн
Большое спасибо!
Разобрался. В методе closeEvent главного окна закрываю все дочерние окна.
Хотя, наверное, стоит потом попробовать переделать их в диалоги.
Но т.к. их не очень много, наверное оставлю список дочерних окон, которые необходимо закрывать при закрытии главного.
Отредактировано (Сен. 4, 2010 22:13:46)
Офлайн