2011-12-19 3 views
6

Мне было интересно, можно ли игнорировать/отменять выход из приложения на основе определенного логического флага, даже если пользователь должен нажать красную кнопку «X» (закрыть окно).Qt application cancel exit event

Я программист C#, и я знаю, что это довольно легко сделать для .net-приложений, но я довольно новичок в qt-фреймворке, и поиск в google не привел к каким-либо релевантным результатам.

Спасибо,

ответ

14

документация Qt описывает этот конкретный use-case about asking permission to close in their examples.

Если вы, например, используете подкласс QMainWindow и переопределяете функцию closeEvent, вы можете настроить приложение в соответствии с индивидуальным поведением, когда кто-то пытается его закрыть. Например:

void MainWindow::closeEvent(QCloseEvent *event) 
{ 
    if (maybeSave()) { 
     writeSettings(); 
     event->accept(); 
    } else { 
     event->ignore(); 
    } 
} 
+1

Чтобы улучшить ответ, вы можете предоставить пример кода в дополнение к ссылке на статью. Лучшие ответы всегда включают источник! –