Как выйти из программы с QCloseEvent?

Я переопределил функцию closeEvent в файле .h диалога входа в систему, чтобы он выходил из программы при выдаче:

    void closeEvent(QCloseEvent *event){exit(0)}

Тем не менее, кажется, что программа закрывается для любой кнопки в диалоге, который я нажимаю.
Как выйти, только нажав кнопку «х» в правом верхнем углу?

3

Решение

closeEvent () вызывается, когда диалог хочет закрыться. Очевидно, что если вы нажмете на кнопку «ОК» или «Отмена» диалогового окна, то оно захочет закрыть. Это нормально.

Кроме того, событие, переданное closeEvent (), должно быть либо принято, либо проигнорировано. Вы не должны просто выйти () из приложения. Например:

void closeEvent(QCloseEvent *event)
{
if (The dialog should close)
event->accept();
else
event->ignore(); // Don't close.
}

Неважно, почему окно хочет закрыть. Независимо от того, нажал ли пользователь «OK», «Отмена» или кнопку «X» в рамке окна. Вы не можете сказать. Близкое событие — только это; окно хочет закрыть.

Если диалоговое окно является последним открытым окном, то QApplication :: exec () вернется, и ваша программа будет нормально закрыта.

5

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector