跳到主要内容

二、QDialog

2.1 常用API

对话框类是QWidget类的子类, 处理继承自父类的属性之外, 还有一些自己所特有的属性, 常用的一些API函数如下:

// 构造函数
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);

[signal] void QDialog::accepted();
[signal] void QDialog::rejected();
[signal] void QDialog::finished(int result);
C++

2.2 常用使用方法

场景介绍:
1. 有两个窗口, 主窗口和一个对话框子窗口
2. 对话框窗口先显示, 根据用户操作选择是否显示主窗口
C++
  • 关于对话框窗口类的操作:
void TestDialog::on__acceptBtn_clicked() {
this->accept();
}


void TestDialog::on__rejectBtn_clicked() {
this->reject();
}


void TestDialog::on__donBtn_clicked() {
this->done(666);
}
C++
  • 根据用户针对对话框窗口的按钮操作, 进行相应的逻辑处理:
// 创建对话框对象
TestDialog dlg;
int ret = dlg.exec(); // 返回值..
if(ret == QDialog::Accepted) {
qDebug() << "accept button clicked...";
// 显示主窗口code...
} else if(ret == QDialog::Rejected) {
qDebug() << "reject button clicked...";
// 不显示主窗口code...
} else {
// ret == 666
qDebug() << "done button clicked...: " << ret;
// 根据需求进行逻辑处理
}
C++
请作者喝奶茶:
Alipay IconQR Code
Alipay IconQR Code
本文遵循 CC CC 4.0 BY-SA 版权协议, 转载请标明出处
Loading Comments...