Qt MainWindow CloseEvent Mac Cmd+QC++

Программы на C++. Форум разработчиков
Anonymous
Qt MainWindow CloseEvent Mac Cmd+Q

Сообщение Anonymous »

В OS X 10.9 с Qt 5.2 и следующим кодом приложения

Код: Выделить всё

#include "mywindow.h"
#include 

int main(int argc, char *argv[]) {
QApplication a(argc, argv);
MyWindow w();
w.show();
return a.exec(); }
где MyWindow является производным от QMainWindow и перезаписывает метод closeEvent(QCloseEvent*), этот метод вызывается, когда я закрываю окно приложения (например, нажмите кнопку закрытия Windows (x), но оно не вызывается, когда я закрываю приложение через главное меню -> «Выход» или с помощью сочетания клавиш «CMD + Q».

Посмотрев в Интернете и задав многочисленные вопросы, у меня сложилось впечатление, что закрытие приложения должно вызывать closeEvent для всех окон верхнего уровня. Это не так, или здесь что-то не так?

Изменить: Помимо вышеперечисленных способов закрытия приложения существуют любые другие случаи, которые мне обычно следует обрабатывать, которые приведут к QApplication::quit вместо вызова события закрытия окна? А как насчет, например, завершения работы системы?

При обработке события закрытия я подтверждаю, что пользователь действительно хочет выйти, и гарантирую очистку, например происходит запись измененных настроек. Должен ли я вместо этого переместить настройки очистки/сохранения в деструктор и выполнить запрос подтверждения в closeEvent?

Подробнее здесь: https://stackoverflow.com/questions/232 ... t-mac-cmdq

Вернуться в «C++»