当前位置: 首页 > news >正文

【Qt】:对话框(一)

对话框

  • 一.基本的对话框
  • 二.自定义对话框
  • 三.通过图形化界面自定义对话框
  • 四.关于对话框mode

对话框是GUI程序中不可或缺的组成部分。一些不适合在主窗口实现的功能组件可以设置在对话框中。对话框通常是一个顶层窗口,出现在程序最上层,用于实现短期任务或者简洁的用户交互。

Qt常用的内置对话框有:

  1. QFiledialog (文件对话框).
  2. QColorDialog(颜色对话框)、
  3. QFontDialog(字体对话框)、
  4. QInputDialog(输入对话框)
  5. QMessageBox(消息框)。

在创建项目时,本身就有有dialog项目。

在这里插入图片描述

但是在实际工作中,更多的是在window文件里,创建对话框,继承dialog类。

一.基本的对话框

创建一个按钮,当点击该按钮时,就会弹出一个对话框。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

上述代码实际上是有问题的。每次点击按钮都会new一个新对象,毫无疑问是会造成内存泄漏的。所以我们应该在使用完毕后delete。当用户点击叉时,发出信号,delete窗口。为了方便我们操作,Qt对此封装了一个属性用以实现上面功能。

在这里插入图片描述

二.自定义对话框

上面的对话框太单调了,我们想加一些其它东西。所以我们就需要继承dialog创建类。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

如果想要添加控件,直接在对应的cpp文件里添加即可。

在这里插入图片描述

在这里插入图片描述

三.通过图形化界面自定义对话框

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在当前ui文件里就可以自定义对话框了,完成后再像上面一样创建dialog,就可以调用自定义对话框了。

在这里插入图片描述

注意此处调用的是我们自己生成的类,而不是库里的QDialog。

在这里插入图片描述

四.关于对话框mode

对话框分为模态对话框和⾮模态对话框。

模态对话框指的是:显示后无法与父窗口进行交互,是一种阻塞式的对话框。使用QDialog.:exec()函数调用。模态对话框适用于必须依赖用户选择的场合,比如消息显示,文件选择,打印设置等。

非模态对话框显示后独立存在,可以同时与父窗口进行交互,是一种非阻塞式对话框,使用QDialog:show()函数调用。
非模态对话框一般在堆上创建,这是因为如果创建在栈上时,弹出的非模态对话框就会一闪而过。同时还需要设置Qt:WA_DeleteOnClose属性,目的是:当创建多个非模态对话框时(如打开了多个非模态窗口),为了避免内存泄漏要设置此属性。
非模态对话框适用于特殊功能设置的场合,比如查找操作,属性设置等。

上面所写代码都是非模态的,想要改成模态的也很简单,只需要把show函数改成exec即可。

在这里插入图片描述

在这里插入图片描述

http://www.lryc.cn/news/335928.html

相关文章:

  • 数据结构与算法 — 贪心算法
  • python如何连接openGauss及django相关配置
  • ​开箱子的游戏能做吗?
  • 一、Spring基础 --- 基础内容(二) (咕P4)
  • uview2 表单Form校验validate不生效处理方法
  • 给已存在的docker容器修改端口映射
  • 【Keil5-调试】
  • OpenHarmony分布式软总线API调用测试工具 softbus_tool使用说明
  • Go第三方框架--ants协程池框架
  • 【原创】springboot+vue个人财务记账管理系统设计与实现
  • MySQL基础练习题:习题2-3
  • 超图SuperMap-Cesium,地形图层,可以渲染一个或多个地形(地形可缓存DEM,TIN方式),webGL代码开发(2024-04-08)
  • PCB学习记录---原理图
  • 结构型模式--3.组合模式【草帽大船团】
  • 网络基础三——其他周边问题
  • 学习周报:文献阅读+Fluent案例+水力学理论学习
  • Redis(持久化 -- RDB AOF)
  • LDR6328助力Type-C普及,便捷充电,绿色生活更精彩
  • redis主从复制、哨兵模式、集群
  • shell免登陆脚本
  • 基于springboot+vue+Mysql的职称评审管理系统
  • GitLab教程(一):安装Git、配置SSH公钥
  • 【算法】无序数组的两数之和 - map标记
  • Prime (2021): 2
  • React 状态管理:安全高效地修改对象属性的 3 种方法
  • python实现pdf的页面替换
  • [AIGC] Java List和Map常用API以及其Python实现方式对照介绍
  • 零基础如何闯入IT的神秘大门?
  • java程序 .exe启动nginx防止重复启动,已解决
  • 二十一、Rust 反射 获取类型