Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 3, 2010 23:29:28

annndrey
От:
Зарегистрирован: 2009-06-11
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQT4 Закрытие дочерних окон

Добрый вечер.

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

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

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

Спасибо.



Офлайн

#2 Сен. 4, 2010 12:27:57

dartNNN
От:
Зарегистрирован: 2009-12-08
Сообщения: 199
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQT4 Закрытие дочерних окон

Можно сделать на основе mdi примера (там дочерние окна внутри основного, и делается все это через QMdiArea) если конечно подойдет. А если нет, то надо в этом примере mdiArea заменить, например, на простой список и самому написать функцию closeAllSubWindow(), где пробегать по списку и закрывать все окна (метод close()).
Вот как-то так.



Офлайн

#3 Сен. 4, 2010 12:34:25

pasaranax
От:
Зарегистрирован: 2009-06-13
Сообщения: 574
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQT4 Закрытие дочерних окон

Ты, наверное, создаешь дочерние окна, как обычные виджеты без указания родителя?
Есть несколько путей:
1. Как сказал dartNNN, вести список окон и у родителя в closeEvent прописать их закрытие
2. Делать дочерние окна модальными (метод setModal()), чтобы они блокировали приложение, пока их вручную не закроешь
3. Использовать вместо QWidget QDialog и прописывать им родителя, тогда при закрытии родителя диалоги будут тоже закрываться. Предпочтительный метод, имхо.



Офлайн

#4 Сен. 4, 2010 14:15:09

Zubchick
От:
Зарегистрирован: 2009-07-08
Сообщения: 613
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQT4 Закрытие дочерних окон

у любого виджета есть родитель, достаточно его указать чтобы при закрытии родителя остальные тоже закрывались.

вот посмотри примеры метод showAboutWindow http://bitbucket.org/zubchick/madmodeller/src/tip/forms/MainForm.py#cl-243 , http://bitbucket.org/zubchick/madmodeller/src/tip/forms/about.py. Это были мои первые пробы пера, так что посмотри тока на идею)



Офлайн

#5 Сен. 4, 2010 22:11:24

annndrey
От:
Зарегистрирован: 2009-06-11
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

PyQT4 Закрытие дочерних окон

Большое спасибо!
Разобрался. В методе closeEvent главного окна закрываю все дочерние окна.

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



Отредактировано (Сен. 4, 2010 22:13:46)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version