码迷,mamicode.com
首页 > 其他好文 > 详细

QT之对话框

时间:2018-03-30 01:14:06      阅读:118      评论:0      收藏:0      [点我收藏+]

标签:QT   对话框   

我们在平时的软件设计中,难免会遇到对话框,那么我们今天就来看看 Qt 中的对话框。

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

    以上内容来自狄泰软件学院的QT教程,欢迎大家一起来学习,可以加我QQ:243343083,一起学习。狄泰技术交流群:199546072 

QT之对话框

标签:QT   对话框   

原文地址:http://blog.51cto.com/12810168/2092759

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!