Примечание: речь идет о Qt на виджетах.
Даже если у вас приложение состоит из одной формы, то в любом случае его можно закрыть кнопкой в заголовке или нажатием быстрых клавиш. Чтобы это предотвратить, надо всего навсего переопределить стандартное событие виджета closeEvent. Оно имеет следующее определение:
virtual void closeEvent(QCloseEvent *event);
таким образом, если мы имеем, например, форму MainWindow, то в заголовке (.h) пишем такой код:
class MainWindow : public QMainWindow
{
...
virtual void closeEvent(QCloseEvent *event);
...};
а в файле реализации непосредственно сам метод:
void MainWindow::closeEvent(QCloseEvent* event) { int quit = QMessageBox::information(this,
"Realy quit?", "Are you sure?", tr("Yes"), tr("No")); quit == 0 ? event->accept(): event->ignore(); }
и не забываем прописать все необходимые инклюды в начале страницы:
#include "qmessagebox" #include "qcloseevent"
Теперь любая попытка закрыть данное окно приведет к появлению
вашего сообщения.