重写closeEvent
class Dialog : public QDialog
{
Q_OBJECT
public:
explicit Dialog(QWidget *parent = nullptr);
~Dialog();
private slots:
void on_pushButton_clicked();
private:
Ui::Dialog *ui;
// QWidget interface
protected:
void closeEvent(QCloseEvent *event);
};
void Dialog::closeEvent(QCloseEvent *event)
{
QMessageBox::StandardButton btn;
btn= QMessageBox::question(this,tr("退出"),tr("即将退出,是否继续?"),QMessageBox::No | QMessageBox::Yes,QMessageBox::Yes);
if(btn == QMessageBox::Yes)
{
//设置事件对象的接受标志,等效于调用setAccepted(true)。
//接受退出事件
event->accept();
}
else if(btn == QMessageBox::No)
{
//清除事件对象的接受标志参数,等效于调用setAccepted(false)。
//忽略退出事件
event->ignore();
}
}
运行结果