重写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();
}
}
运行结果

本文介绍了一种在Qt中重写QDialog类的closeEvent方法的方法,通过弹出确认对话框来控制窗口的关闭行为。这在需要用户确认是否退出的场景下非常有用。
1万+

被折叠的 条评论
为什么被折叠?



