转载:http://blog.csdn.net/xdlichen/article/details/46374517
本篇,会重点讲述模式对话框,以及exec()的用法,accept()和accepted的概念。

一.非模式对话框

非模式对话框是和同一个程序中其它窗口操作无关的对话框。在字处理软件中查找和替换对话框通常是非模式的来允许同时与应用程序主窗口和对话框进行交互。调用show()来显示非模式对话框。show()立即返回,这样调用代码中的控制流将会继续。在实践中你将会经常调用show()并且在调用show()的函数最后,控制返回主事件循环。

上述是我从其他网站上摘抄的,我感觉写的很好。

非模式对话框,说白了,就像你打开了好几个QQ聊天窗口,每个聊天窗口都是一个非模式对话框,想和谁聊和谁聊,只要点击那个窗口就可以输入聊天信息进行发送了。

二.模式对话框

模式对话框就是阻塞同一应用程序中其它可视窗口的输入的对话框:用户必须完成这个对话框中的交互操作并且关闭了它之后才能访问应用程序中的其它任何窗口。模式对话框有它们自己的本地事件循环。用来让用户选择一个文件或者用来设置应用程序参数的对话框通常是模式的。调用exec()来显示模式对话框。当用户关闭这个对话框,exec()将提供一个可用的返回值并且这时流程控制继续从调用exec()的地方进行。通常,我们连接默认按钮,例如“OK”到accept()槽并且把“Cancel”连接到reject()槽,来使对话框关闭并且返回适当的值。另外我们也可以连接done()槽,传递给它Accepted或Rejected。

还是我从其它网站上摘抄的,我还是感觉写的很好。

非模式对话框,说白了,就像你打开QQ聊天窗口,如果这个窗口是模式对话框,那么完蛋了,你必须要先和这货聊完天,然后关闭这个窗口,你才能继续干其他的事情,否则,你根本无法去操作其他的窗口。

OK,下面举一个简单的例子:

1)创建一个widget的类,此为主窗口界面

2)再创建一个mydialog类,此为子窗口界面

那么,我希望在子窗口界面上做一个按键,一旦按下,子窗口界面消失,进入主窗口中。(QT教程与软件里面的第二章)

1.看下图,其中sender为该“进入主窗口”这个按键,clicked为按下这个按键要发送的信号。muyDialog为当前子类的对象,而accept为当前的槽函数。

连在一起的意思是,按下按键后,发送click的信号,然后accept这个槽函数收到信号,然后执行。accept()的作用是:将当前的窗口隐藏(这样就做到子窗口功能消失这个功能),并且发送accepted信号,也就是设置设置结果代码为Accepted。

.

2.在main函数中,写入如下代码:

int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;myDialog my1;      //创建一个指向子窗口的对象if(my1.exec() == QDialog::Accepted){w.show();return a.exec();}else{return 0;}
}

首先,my1.exec()的意思是:执行模式对话框。按照之前对模式对话框的讲述,my1.exec()的意思就是,显示子窗口,并在这里阻塞住,知道该窗口被关闭之后,才继续往下运行!

正因为在这里阻塞住了,所以才没有显示主窗口,因为w.show()没有被运行!

后面就好理解了,当子窗口的那个按键按下后,发出accepted的信号,if(my1.exec() == QDialog::Accepted)这句话成立,所以子窗口关闭,继续执行到w.show()这句话,然后显示主窗口。

到现在为止,所有的功能都实现了。

qt: exec()的用法,accept()和accepted的概念相关推荐

  1. Qt QPushButton按钮用法详解

    Qt QPushButton按钮用法详解 按钮是 GUI 开发中最常用到的一种控件,作为一款著名的 GUI 开发框架,Qt 提供了很多种按钮,比如 QPushButton(普通按钮).QRadioBu ...

  2. cube、rollup及exec的用法实例

    为什么80%的码农都做不了架构师?>>>    cube.rollup及exec的用法实例 select sdept 系部,sno 学号,max(sage) 最大年龄,   grou ...

  3. Qt IFW基本用法

    概述 在上一篇文章中简单介绍了Qt IFW的优势,并且介绍了如何下载安装软件,那么,在本篇中来看一下如何使用IFW创建一个最简单的应用安装包,并介绍一些基本用法. 运行示例 在介绍之前我们首先跑一个Q ...

  4. Qt之QTemporaryDir用法(创建临时目录)

    概述 在 Qt 开发中,有时候会要创建一个临时目录,用于存储一些临时文件,在用完过后又要删除该目录,这个逻辑自己实现起来并不复杂,多写几行代码就搞定了,但是这里要说的是更简单的用法QTemporary ...

  5. Qt中QTableWidget用法总结

    QTableWidget是QT程序中常用的显示数据表格的空间,很类似于VC.C#中的DataGrid.说到QTableWidget,就必须讲一下它跟QTabelView的区别了.QTableWidge ...

  6. Qt之QThread用法

    QThread类提供了与系统无关的线程. QThread代表在程序中一个单独的线程控制.线程在run()中开始执行,默认情况下,run()通过调用exec()启动事件循环并在线程里运行一个Qt的事件循 ...

  7. QT之QPainter用法

    QPainter可以绘制从简单的直线到像饼图和弦这样的复杂形状.它也可以绘制排列的文本和像素映射.通常,它在一个"自然的"坐标系统中绘制. QPainter 一般在部件的绘图事件 ...

  8. QT QTableWidget的用法

    简述: 表格类是Qt中常用的控件,如QTableWidget,QTableView.QTableWidget是QTableView的子类,主要区别是QTableView可以使用自定义的数据模型来显示内 ...

  9. 自己在网上收集的一些Qt的小用法

    setWindowFlags(Qt::FramelessWindowHint);     //也是去掉标题栏的语句 setWindowFlags(Qt::WindowMinimizeButtonHin ...

最新文章

  1. (二)OpenStack---M版---双节点搭建---数据库安装和配置
  2. python3 dict 转 json 不ascii转码 去除空格
  3. ntoskrnl.exe文件丢失或损坏的解决方法
  4. .NET中常见的 IL 指令集
  5. python 将元组解析为多个参数
  6. VScode PowerShell运行脚本报错禁止运行脚本解决方式图文
  7. 【Python】Python库之数据可视化
  8. python14张思维导图高清pdf_程序员必备,快速学习 Python 的全套14张思维导图(附高清版下载)...
  9. 查询商品信息报错FreeMark template error
  10. 指令由电子计算机,电子计算机主要是以
  11. 后端的日期类型赋值前端表单_Spring Boot实践--前端字符串日期自动转换成后台date类型。...
  12. 入行 AI,如何选个脚踏实地的高薪岗位?
  13. Struts2框架学习之一:Hello World程序
  14. 光纤资料大全之光纤分类
  15. vant实现Select效果--单选和多选
  16. html的介绍及常用标签,吊打面试官系列!
  17. 从村上春树到cyberspace security
  18. python随手记自动记账_随手记的5个常用功能,让你记账省心,高效,又安全
  19. JVM G1GC参数配置
  20. 通达信股票的量化分析模型的公式

热门文章

  1. 电脑蓝屏个人解决办法————由程序引起的
  2. 微信小程序本地服务器搭建
  3. 2022年终总结-两年Androider的成长之路
  4. Java中缓存之内存缓存
  5. java中缓存的原理
  6. 网站服务器如何选择?
  7. 基于Gromacs的蛋白分子动力学模拟(RMSD、RMSF及蛋白的回旋半径)
  8. 百度网盘真实地址解析(告别下载百度网盘)--修改版
  9. Verilog 语法入门知识
  10. Astah Professional安装