Название: Закрытие QMessageBox при закрытии родителя. Отправлено: vizir.vs от Декабрь 04, 2013, 09:13 У меня есть родительский виджет, в которым вызывается QMessageBox. При закрытие виджета, QMessageBox продолжает висеть, хотя я указал ему родителя.
Код: this->showFullScreen(); Как сделать так, чтобы при закрытии родителя, QMessageBox тоже закрывался? Название: Re: Закрытие QMessageBox при закрытии родителя. Отправлено: Fregloin от Декабрь 04, 2013, 11:44 думаю есть смысл связать сигнал родителя destroyed со слотом close вашего меседжбокса как вариант, перед отображением
Название: Re: Закрытие QMessageBox при закрытии родителя. Отправлено: kambala от Декабрь 04, 2013, 11:53 разве QMessageBox не блокирует все окна приложения? или тут особый QMessageBox с модальностью не ApplicationModal?
Название: Re: Закрытие QMessageBox при закрытии родителя. Отправлено: carrygun от Декабрь 04, 2013, 12:35 разве QMessageBox не блокирует все окна приложения? или тут особый QMessageBox с модальностью не ApplicationModal? Судя по примеру - родителя закрывают программно. Я, если четсно, никогда не пробовал так делать. Название: Re: Закрытие QMessageBox при закрытии родителя. Отправлено: vizir.vs от Декабрь 04, 2013, 12:37 разве QMessageBox не блокирует все окна приложения? или тут особый QMessageBox с модальностью не ApplicationModal? Дело в том, что у меня идет какой-то процесс, заданной длительностью. Пользователь может его отменить, и тогда появится QMessageBox с вопросом: "вы уверены?". Пока вопрос весит, процесс может уже закончится и закрыть окно, в котором оно выполнялось. Необходимо, что QMessageBox закрывалось за ним. Я полагал, что при закрытии родителя, дочернее окно QMessageBox тоже закроется, но это не сработало. Название: Re: Закрытие QMessageBox при закрытии родителя. Отправлено: vizir.vs от Декабрь 04, 2013, 13:41 думаю есть смысл связать сигнал родителя destroyed со слотом close вашего меседжбокса как вариант, перед отображением проблема в том, что виджет/диалог не закрывается, а скрываются (hide(), close()). В итоге виджет/диалог не удаляется, а как следствие сигнал destroy не шлется. Для диалогов можно связать сигнал finished и закрытие окна. А для виджетов я пока вижу только одну идею, переопределить closeEvent и самому слать какой нибудь сигнал, который бы я обрабатывал. Может кто знает альтернативный путь? Не хотелось бы переопределять closeEvent, тогда придется добавлять лишний уровень абстракции, в котором бы этот closeEvent и сигнал были бы определены. Название: Re: Закрытие QMessageBox при закрытии родителя. Отправлено: Hellraiser от Декабрь 04, 2013, 15:27 Для удаления, а не сокрытия, виджета ставим атрибут:
Код
Название: Re: Закрытие QMessageBox при закрытии родителя. Отправлено: vizir.vs от Декабрь 04, 2013, 15:39 Для удаления, а не сокрытия, виджета ставим атрибут: Код
Это да, но у меня есть виджеты, которые скрыты, но на них приходят данные, поэтому я их не закрываю, а скрываю. Название: Re: Закрытие QMessageBox при закрытии родителя. Отправлено: Hellraiser от Декабрь 04, 2013, 15:47 Этот атрибут надо ставить не на все виджеты, а только для нужного. Можно в конструкторе, можно и в месте создания этого виджета.
Название: Re: Закрытие QMessageBox при закрытии родителя. Отправлено: vizir.vs от Декабрь 05, 2013, 09:31 В общем пока сделал временное решение - обработка сигнала finished(int).
|