немодальный QDialog: closeEvent () не вызывается при выходе из приложения? - PullRequest
1 голос
/ 05 февраля 2011

У меня есть немодальный диалог, который переопределяет closeEvent (), чтобы сохранить его состояние.Это работает нормально, если я на самом деле закрываю диалог.Однако, если я просто выйду из приложения какими-либо средствами (что, конечно, приводит к закрытию моего диалога), closeEvent () никогда не будет вызван.

Это сделано специально?Это ошибка Qt?Есть ли что-то вроде свойства, которое мне нужно установить в виджете, чтобы он мог получать события закрытия при завершении работы приложения?

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

Спасибо за любые мысли!

Ответы [ 2 ]

3 голосов
/ 05 февраля 2011

Возможно, вы могли бы использовать хитрое решение: просто вызовите closeEvent вашего диалога из closeEvent MainWindow, передав объект QCloseEvent в качестве аргумента.Например:

void QtMainWindowTest::closeEvent(QCloseEvent *ev)
{
    _dlg ->closeEvent(ev);
}
1 голос
/ 05 февраля 2011

В Qt есть ошибка, что когда приложение закрывается с помощью команды меню (вместо закрытия последнего QMainWindow), система событий не закрывается должным образом, а объекты в куче просто просачиваются.Обычно он просто вызывает exit();.

Я подал ошибку для этого на платформе Mac.Я не знаю, какая у вас платформа и влияет ли она на это.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...