博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
QT QMessageBox 弹出两次的可能原因
阅读量:3959 次
发布时间:2019-05-24

本文共 1267 字,大约阅读时间需要 4 分钟。

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();        }    }}

转载地址:http://hfqzi.baihongyu.com/

你可能感兴趣的文章