本文共 1267 字,大约阅读时间需要 4 分钟。
写关闭确认对话框的时候发现点击关闭按钮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(); } }}
转载地址:http://hfqzi.baihongyu.com/