Qt应用开发(基础篇)——对话框窗口 QDialog

一、前言

QDialog 类继承于QWidget,是Qt基于对话框窗口(消息窗口QMessageBox 、颜色选择窗口QColorDialog 、文件选择窗口QFileDialog等)的基类。

QDialog 窗口是顶级的窗口,一般情况下,用来当做用户短期任务(确认、输入、选择)或者和用户交流(提示、错误、警告、进度等)的弹窗,弹窗可以是模态modal或者非模态的,使用exec()进入模态对话框,使用show()进入非模式对话框,模式对话框可以保证子窗口一直在父窗口的顶部并默认居中显示。

模态窗口 :模态对话框是一种阻止同一应用程序中其他可见窗口输入的对话框。通常,用于向用户请求文件名或设置应用程序首选项的对话框是模态的。打开应用程序模态对话框时,用户必须在访问应用程序中的任何其他窗口之前完成与对话框的交互并关闭它。窗口模态对话框仅阻止对话框关联的窗口的访问,允许用户继续使用应用程序中的其他窗口。

cpp 复制代码
QDialog *dia = new QDialog(this);
dia->resize(500,400);
dia->setWindowTitle("my dialog");
dia->setSizeGripEnabled(true);
dia->exec();

二、QDialog类

1、modal

该属性表示窗口是否为模式窗口,默认为非模式对话框fase。

cpp 复制代码
bool isModal() const
void setModal(bool modal)

2、sizeGripEnabled

该属性表示窗口是否在右在下角显示一个控制大小的部件QSizeGrip,参考上例。

cpp 复制代码
bool isSizeGripEnabled() const
void setSizeGripEnabled(bool)

3、公共函数

1)result

返回模式对话框返回的结果,QDialog::Accepted或者QDialog::Rejected。

cpp 复制代码
int result() const

子类QMessageBox在此方法中返回的是按钮的值。

2)setResult

设置模式对话框的结果,QDialog::Accepted或者QDialog::Rejected。

cpp 复制代码
void setResult(int i)

3)accept

关闭窗口,result返回值为QDialog::Accepted。

cpp 复制代码
virtual void accept()

4)reject

关闭窗口,result返回值为QDialog::Rejected。

cpp 复制代码
virtual void reject()

5)exec

模式对话框打开窗口,并代码阻塞,知道用户关闭窗口,返回一个状态值。

cpp 复制代码
virtual int exec()

6)open

模式对话框打开窗口,并且立即返回,不会阻塞,和setModal 为true,然后调用show,效果一样。

cpp 复制代码
virtual void open()

7)done

关闭对话框并将其结果代码设置为r。

**finished()**信号将发出r。

如果r是QDialog::Accepted或QDialog::Rejected,则也将分别发出Accepted() 或**Rejected()**信号。

如果使用exec()显示此对话框,done()也会导致本地事件循环结束,并且exec()返回r。

如果设置了Qt::WA_DeleteOnClose标志,done()将删除对话框。

cpp 复制代码
virtual void done(int r)

4、信号

**1)**accepted

当对话框被用户接受,或者使用QDialog:: accepted参数调用accept()或done()时,就会发出这个信号。

注意,当使用hide()或setVisible(false)隐藏对话框时,不会发出这个信号。这包括在对话框可见时删除它。

cpp 复制代码
void accepted()

2)finished

当用户调用done()、accept()或reject()设置了对话框的结果代码时,就会发出这个信号。

注意,当使用hide()或setVisible(false)隐藏对话框时,不会发出这个信号。这包括在对话框可见时删除它。

cpp 复制代码
void finished(int result)

3)rejected

当对话框被用户拒绝,或者使用QDialog:: rejected参数调用reject()或done()拒绝时,就会发出这个信号。

注意,当使用hide()或setVisible(false)隐藏对话框时,不会发出这个信号。这包括在对话框可见时删除它。

cpp 复制代码
void rejected()
相关推荐
唐诺3 小时前
几种广泛使用的 C++ 编译器
c++·编译器
mahuifa4 小时前
混合开发环境---使用编程AI辅助开发Qt
人工智能·vscode·qt·qtcreator·编程ai
冷眼看人间恩怨4 小时前
【Qt笔记】QDockWidget控件详解
c++·笔记·qt·qdockwidget
红龙创客5 小时前
某狐畅游24校招-C++开发岗笔试(单选题)
开发语言·c++
Lenyiin5 小时前
第146场双周赛:统计符合条件长度为3的子数组数目、统计异或值为给定值的路径数目、判断网格图能否被切割成块、唯一中间众数子序列 Ⅰ
c++·算法·leetcode·周赛·lenyiin
yuanbenshidiaos6 小时前
c++---------数据类型
java·jvm·c++
十年一梦实验室7 小时前
【C++】sophus : sim_details.hpp 实现了矩阵函数 W、其导数,以及其逆 (十七)
开发语言·c++·线性代数·矩阵
taoyong0017 小时前
代码随想录算法训练营第十一天-239.滑动窗口最大值
c++·算法
这是我587 小时前
C++打小怪游戏
c++·其他·游戏·visual studio·小怪·大型·怪物
fpcc7 小时前
跟我学c++中级篇——C++中的缓存利用
c++·缓存