QT之对话框(十四)
admin
2023-07-27 22:40:05
0次
    我们在平时的软件设计中,难免会遇到对话框,那么我们今天就来看看 Qt 中的对话框。

对话框是与用户进行简短交互的顶层窗口,QDialog 是 Qt 中所有对话框窗口的基类。QDialog 继承于 QWidget 是一种容器类型的组件。关系入下图所示:
QT之对话框(十四)
QDialog 的意义:1、QDialog 作为一种专用的交互窗口而存在;2、QDialog 不能作为子部件嵌入其它容器中;3、QDialog 是定制了窗口式样的特殊的 QWidget。
我们做如下实验:
QT之对话框(十四)
那么这块就涉及到两个概念了:模态对话框和非模态对话框。我们下来就分别介绍下这两个对话框的特点。
模态对话框(QDialog::exec()):显示后无法与父窗口进行交互,是一种阻塞式的对话框调用方式。
非模态对话框(QDialog::show()):显示后独立存在可以同时与父窗口进行交互,是一种非阻塞式的对话框调用方式。
那么在一般情况下:模态对话框用于必须依赖用户选择的场合,如消息提示、文件选择、打印设置等;非模态对话框用于特殊功能设置的场合,如查找操作、属性设置等。
那么我们在栈上创建模态对话框是最简单常用的方式,在一般情况下非模态对话框需要在堆上创建,通过 QDialog::setModal 函数可以创建混合特性的对话框,非模态对话框需要指定 Qt::QA_DeleteOnClose 属性。
我们下面就做个试验,建立3个按钮,按下每个按钮则打印出 begin 和 end 。如下所示:
头文件:
QT之对话框(十四)
源文件,每个按钮对应打印 begin 和 end。如下:
QT之对话框(十四)
那么我们运行得到如下所示,每按下一个按钮,就会对应打印出相应信息:
QT之对话框(十四)
那么只有模态对话框才有返回值的概念,模态对话框的返回值用于表示交互结果。QDialog::exec() 的返回值为交互结果:1、void QDialog::done(int i) 关闭对话框并将参数作为交互结果;2、QDialog::Accepted - 用户操作成功;3、QDialog::Rejected - 用户操作失败。
我们分别在三个函数里做如下设置,ModalBtn_Clicked返回Accepted;NormalBtn_Clicked返回Rejected;MixedBtn_Clicked返回100,如下所示:
QT之对话框(十四)
主程序如下所示:
QT之对话框(十四)
结果分别如下:
QT之对话框(十四)QT之对话框(十四)QT之对话框(十四)
那么今天我们就学习了对话框相关的知识,分为模态对话框和非模态对话框;模态对话框是阻塞式的,用于依赖用户交互结果的场合;非模态对话框是非阻塞式的,用于功能设置的场合。

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...