Russian Qt Forum
Ноябрь 27, 2024, 07:01 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Синхронный вызов show без возврата управления  (Прочитано 3225 раз)
Lagovas
Гость
« : Август 14, 2012, 23:03 »

Как можно вызвать show или его аналог какой то, что бы возврат управления был после закрытия окна?
Код:
widget.show();
doSomething();
Что бы doSomething() выполнилось лишь после закрытия widget. В шарпе без возврата был просто show(), без - showDialog(). Здесь такого не нашел. Нашел только как модальным нормально сделать и все. По ходу нужно подписываться на какой нить closeEvent этого виджета? Просто как то чрезмерно для виджета который используется в одной лишь функции лишь показать инфу, создавать слот, лишь для того, что бы выполнить действия после закрытия, вместо прозрачного использования в одном лишь методе, вместо лишних сигналов и слотов.
Записан
LisandreL
Птица говорун
*****
Offline Offline

Сообщений: 984


Надо улыбаться


Просмотр профиля
« Ответ #1 : Август 14, 2012, 23:26 »

У наследников QDialog есть exec().
Записан
Lagovas
Гость
« Ответ #2 : Август 14, 2012, 23:30 »

Т.е. достаточно заменить наследование с qwidget на qdialog и все ок станет? Странно что не у каждого виджета такое есть, раз они по умолчанию могут окном быть, ибо не всегда хватит повесить на destroyed слот, ибо это для всех закрытий окна будет действовать, а бывает нужно отработать закрытие в конкретном контексте...
Записан
QtCoder
Гость
« Ответ #3 : Август 15, 2012, 06:40 »

Как можно вызвать show или его аналог какой то, что бы возврат управления был после закрытия окна?
Код:
widget.show();
doSomething();
Что бы doSomething() выполнилось лишь после закрытия widget. В шарпе без возврата был просто show(), без - showDialog(). Здесь такого не нашел. Нашел только как модальным нормально сделать и все. По ходу нужно подписываться на какой нить closeEvent этого виджета? Просто как то чрезмерно для виджета который используется в одной лишь функции лишь показать инфу, создавать слот, лишь для того, что бы выполнить действия после закрытия, вместо прозрачного использования в одном лишь методе, вместо лишних сигналов и слотов.

widget.setAttribute(Qt::WA_DeleteOnClose);
QEventLoop loop;
connect(&widget, SIGNAL(destroyed(QObject *), &loop, SLOT(quit()));
widget.show();
loop.exec();
doSomething();

А вообще надо юзать qdialog
Записан
Lagovas
Гость
« Ответ #4 : Август 15, 2012, 09:46 »

Спасибо. Сделал себе QDialog, но на будущее знать обходные пути не помешает.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.139 секунд. Запросов: 22.