QT QMessageBox 彈出兩次的可能原因
寫關閉确認對話框的時候發現點選關閉按鈕QMessageBox彈出了兩次,而經确認closeEvent隻觸發了一次,相關代碼如下:
void MainWindow::closeEvent(QCloseEvent* event)
{
QMessageBox confirmBox(nullptr);
confirmBox.setText("Config Changed");
confirmBox.setInformativeText("Do you want to save the chance?");
confirmBox.setStandardButtons(QMessageBox::No | QMessageBox::Yes | QMessageBox::Cancel);
confirmBox.setDefaultButton(QMessageBox::Cancel);
confirmBox.setFixedSize(200, 100);
if(confirmBox.exec() == QMessageBox::Cancel)
{
event ->ignore();
}
else
{
if(confirmBox.exec() == QMessageBox::Yes)
{
... //其他代碼
event ->accept();
}
}
}
原因是每次調用exec()時對話框都會彈出一次,改成下面這樣就行了:
void MainWindow::closeEvent(QCloseEvent* event)
{
QMessageBox confirmBox(nullptr);
confirmBox.setText("Config Changed");
confirmBox.setInformativeText("Do you want to save the chance?");
confirmBox.setStandardButtons(QMessageBox::No | QMessageBox::Yes | QMessageBox::Cancel);
confirmBox.setDefaultButton(QMessageBox::Cancel);
confirmBox.setFixedSize(200, 100);
int button = confirmBox.exec();
if(button == QMessageBox::Cancel)
{
event ->ignore();
}
else
{
if(button == QMessageBox::Yes)
{
... //其他代碼
event ->accept();
}
}
}