Anastasia
Anastasia

Reputation: 9

Yes/No message box using QMessageBox

I want to close the application when I click "Yes", but it closes even I press "No". What is wrong?

void secondwindow::on_pushButton_clicked()
{
    QMessageBox msg;
    msg.setWindowTitle("Quit");
    msg.setText("Are you sure you want to quit?");
    msg.setIcon(QMessageBox::Question);
    msg.setStandardButtons(QMessageBox::Yes|QMessageBox::No);
    msg.setStyleSheet(QString::fromUtf8("background-color: white;"));
    if(msg.exec()==QMessageBox::Yes){
        QApplication::quit();
    }
}

Upvotes: 0

Views: 100

Answers (2)

Emre Mutlu
Emre Mutlu

Reputation: 11

you can try like this:

    void secondwindow::on_pushButton_clicked()
{
            QMessageBox msg;
            msg.setWindowTitle("Quit");
            msg.setText("Are you sure you want to quit?");
            msg.setIcon(QMessageBox::Question);
            msg.setStandardButtons(QMessageBox::Yes|QMessageBox::No);
            msg.setStyleSheet(QString::fromUtf8("background-color: white;"));
            int answer=msg.exec();
            switch (answer) {
            case QMessageBox::Yes:
                 QApplication::quit();
                 break;
            case QMessageBox::No:
                 //do something
                 break;
           }
}

Upvotes: 0

3CxEZiVlQ
3CxEZiVlQ

Reputation: 38539

You can check msg.result() code:

// if(msg.exec()==QMessageBox::Yes){
//     QApplication::quit();
// }

msg.exec();
if (msg.result() == QMessageBox::Yes){
    QApplication::quit();
}

Upvotes: 1

Related Questions