Как скрыть QMessageBox при нажатии стандартных кнопок?

Чего я хочу добиться, так это того, что когда я нажимаю кнопку закрытия (X) или стандартные кнопки (ОК|Да|Нет|...) на QMessageBox, вместо закрытия QMessageBox я просто хочу скрыть это.

Я переопределяю функцию closeEvent(QCloseEvent *event), поэтому, когда я нажимаю кнопку закрытия (X), QMessageBox просто скрывается. Я провел некоторое исследование в Интернете, чтобы попытаться скрыть QMessageBox при нажатии кнопки OK, некоторые люди говорят, что я должен переопределить функцию QDialog::reject(), но я не заставил ее работать.
Вот минимальный пример того, что я пытаюсь сделать:

MessageBox::MessageBox(QWidget *parent) : QMessageBox(parent)
{
    this->setStandardButtons(QMessageBox::Ok);
    int ret = this->exec();

    switch (ret) {
    case QMessageBox::Ok:
        //confusing part
        break;
    default:
        break;
    }
}

void MessageBox::closeEvent(QCloseEvent *event)
{
    event->ignore();
    this->hide();
}

void MessageBox::reject()
{
    //I am confused about how to do this part to hide the message box when the OK button is clicked.
}

Надеюсь, кто-нибудь может предоставить мне способ сделать это? Спасибо.

Редактировать: почему я хочу это сделать?
У меня есть приложение, которое в основном работает в фоновом режиме, поэтому большую часть времени окна скрыты. Когда я нажимаю действие «Проверить обновления» в меню значков на панели задач, появляется QMesssageBox, чтобы показать, доступно ли обновление. И затем, если я нажму кнопки на QMessageBox, приложение просто закроется. Но также я заметил, что если у меня есть активное окно, когда я нажимаю кнопки на QMessageBox, приложение не закрывается. Поэтому я просто хочу, чтобы мое приложение не закрывалось после нажатия кнопок на QMessageBox, когда нет других активных окон. Надеюсь, я понятно объясняюсь.


person Theodore Tang    schedule 08.05.2018    source источник
comment
Кнопка OK вызовет accept(), а не reject(). Вы также можете просто создать нестандартные кнопки и вызвать hide() в соответствующих слотах. Но весь вопрос заставляет меня задаться вопросом: почему вы хотите это сделать?   -  person Karsten Koop    schedule 08.05.2018
comment
Не перезаписывайте отказ.   -  person eyllanesc    schedule 08.05.2018
comment
@KarstenKoop Я отредактировал свой вопрос о том, почему я хочу скрыть окно сообщения   -  person Theodore Tang    schedule 08.05.2018