2010-10-01 11 views
1

Я разрабатываю интерфейс плагина для существующего приложения с использованием PyQt4. Окно создается с помощью uic.loadUi() при нажатии кнопки в главном окне. Проблема в том, что если я снова нажму кнопку (пока отображается окно), окно будет заново создано, а несохраненные изменения будут потеряны. Я не хочу, чтобы окно было модальным. Какие варианты я должен справиться с этой проблемой? Я предполагаю, что это будет связано с проверкой того, что QWidget уже показывает.Как проверить, отображается ли QWidget?

ответ

2

Вы должны Initializer указатель на QWidget (переменная член) в 0.

Когда кнопка нажата, проверьте, если указатель 0 - если он есть, загружать и показывать виджет, и присвоить указатель чтобы указать на новый виджет. Если при нажатии кнопки указатель не равен нулю, вызовите widget->raise() и widget->activateWindow().

Отключенные кнопки могут расстраивать пользователей, так же как кнопки, которые, как представляется, ничего не делают, например. их эффект скрыт.

+0

Отлично! Просто обратите внимание, что функция называется raise_() в PyQt. – underdark

0

Я бы подумал, что это будет больше обрабатываться вашей логикой приложения, чем что-либо еще. Главное окно должно отключить кнопку после ее нажатия, а затем снова включить ее снова, когда окно будет закрыто. Подключите сигнал закрытия во вторичном окне к слоту в главном окне, чтобы уведомить главное окно, когда закрывается вторичное окно.

Смежные вопросы