【QT】Dialog退出事件 您所在的位置:网站首页 页面关闭时触发事件怎么设置的 【QT】Dialog退出事件

【QT】Dialog退出事件

2024-01-23 06:58| 来源: 网络整理| 查看: 265

关于Dialog退出事件思考

首先我们来看下Dialog的成员函数

// 构造函数 QDialog::QDialog(QWidget *parent = nullptr, Qt::WindowFlags f = Qt::WindowFlags()); // 模态显示窗口 [virtual slot] int QDialog::exec(); // 隐藏模态窗口, 并且解除模态窗口的阻塞, 将 exec() 的返回值设置为 QDialog::Accepted [virtual slot] void QDialog::accept(); // 隐藏模态窗口, 并且解除模态窗口的阻塞, 将 exec() 的返回值设置为 QDialog::Rejected [virtual slot] void QDialog::reject(); // 关闭对话框并将其结果代码设置为r。finished()信号将发出r; // 如果r是QDialog::Accepted 或 QDialog::Rejected,则还将分别发出accept()或Rejected()信号。 [virtual slot] void QDialog::done(int r);

注意到accept和reject都是隐藏窗口 接下来我们看一下Dialog的返回值

// 创建对话框对象 Dialog dlg; int ret = dlg.exec(); if(ret == QDialog::Accepted) { qDebug() // ret == 666 qDebug() // 设置close后就会执行这里的事件 QDialog::accept(); // this->reject(); // this->done(123); }

当然还有一种例外,当按下ESC,不会走closeEvent,那么我们需要重写覆盖reject事件

void Dialog::reject() { // do something QDialog::reject(); }

此外,只有设置**setAttribute(Qt::WA_DeleteOnClose);**在关闭Dialog时才会析构



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有