使用 Qt Designer 开发
迪丽瓦拉
2025-05-30 03:29:43
0

使用 Qt Designer 开发

将简介使用 Qt Creator 里自带的 Qt Designer,使用 Qt Designer 比较方便的构造 UI 界
面。特点是方便布局,比较形象

使用 UI 设计器开发程序

在这小节里我们继续学习如何使用 Qt Designer 开发程序,Qt Designer 是属于 Qt Creator 的
一个功能而已,大家不要搞混了。Qt Designer 也叫 UI 设计师或者 UI 设计器,这都是指的同一
个东西而已。下面就简单介绍使用 UI 设计器开发程序,以连接信号与槽为例,简单的介绍这
个开发流程。最后我们思考一下这种开发方式的好处以及不便之处。

在 UI 文件添加一个按钮

新建一个项目为 02_designer_example。如果还不会新建工程,请回到 3.6 小节,步骤一样,
这里不再详细说项目的建立过程了。新建的项目如下,为了方便截图,笔者已经把 3.6 小节的
项目“01_hello_world”关闭了。剩下的就是我们这个新建的项目 02_designer_example。
在这里插入图片描述

添加按钮的方法与 3.6.3 小节添加 Label 的方法一样,在左边找到 Push Button,然后拖拽到
中间的显示窗体里,如下图。

UI 设计器里信号与槽的连接方法一:

在主窗体的上面部分,我们可以看到一些小小的按钮,如下图框框部分。用鼠标放在这些
按钮上面可以查看这个按钮是什么作用。信号槽连接的按钮也在上面。
在这里插入图片描述

点击信号槽连接的按钮如下,如下图①处,点击进入信号槽连接模式(若想退出信号槽连
接模式,则点击①处左边的按钮),进入信号与槽的连接模式后,将鼠标选中我们的“关闭程序”
按钮,按住按钮,然后用鼠标向外拖动,如②处。此时就会出现信号槽连接的符号。
在这里插入图片描述
之后按如下图步骤选择,左边的“关闭程序”pushButton 按钮的信号,可以看到一个对象
的信号可以有多种。右边的 QMainWindow 的槽函数,如果有其他对象,右边不一定只有

MainWidnow 的槽函数(槽),也有可能是其他对象的槽。我们选择按钮的 clicked()信号,将其
连接 MainWindow 对象的 close()槽。这样就完成了信号与槽的连接,非常简单。我们也可以预
知这个信号与槽的功能,当“关闭程序”pushButton 发出了 clicked()信号(也就是单击信号)。
这个信号由“关闭程序”pushButton 被单击时发出。它就会触发 MainWindow 的 close()。进而
使整个程序关闭。MainWindow 的 close()就是退出关闭程序,退出程序的意思。在这里插入图片描述
完成信号槽连接,如下图。要想返回编辑部件模式点击如下图标注位置的按钮。下图就是
信号与槽连接的图示了。在编辑部件模式下我们是看不见的,只有信号槽模式才能看见这样的
图示。 在这里插入图片描述

UI 设计器里信号与槽的连接方法二:

选中“关闭程序”pushButton 按钮,然后右键,如下图。选择“转到槽”。

点击“转到槽”后,弹出下面的窗口,这一步是先让我们选择信号。按如下图选择。如果
细心的同学,我们还发现这个 clicked()信号并不是 pushButton 的,而是 QAbstactButton 的。只
是 pusbButton 继承了 QAbstracButton,同时把这个信号也继承了下来。除此之外我们还看到其
他信号也是不是属于 pushButton 的,也是被继承下来了。所以我们在 C++基础部分学过的继承。
在 Qt 里的作用表现的淋漓尽致!根本不用重写 pushButton 的 clicked()事件。pushButton 只需要
继承父类的 clicked()事件即可!在这里插入图片描述
在这里插入图片描述
点击 OK 后,就会跳转到槽函数里,这个代码由 Qt Creator 自动生成。在这里插入图片描述
同时在 mainwindow.h 里声明了这个槽函数。在这里插入图片描述
如果我们学过 C#,这就好像 C#里的跳转到事件一样。其实这种便捷的编程方式很多编程
的 IDE 都非常类似。只要我们对这种 IDE 有一定的了解,学习起来就不会觉得难。
返回到 mainwindow.cpp 找到 on_pushButton_clicked 这个槽函数里。在这个槽数里写上

this->close();调用 close()方法关闭整个程序。在这里插入图片描述

编译及运行创建的 UI 项目

直接按 Ctrl + r 或者点击左下角的第一个绿色三角符号,编译且运行这个项目。运行的结果
如下。点击“关闭程序”按钮,看看是不是整个程序关闭退出了呢?如果细心的同学还会思考,
我们在上面用了两种方法连接信号与槽。那他们是如何连接的呢?他们两者同时连接会有影响吗?在哪里连接的呢?这些都是我们需要探讨的问题?难道第二种方法写上槽函数就会自动被
触发?下一节我们继续学习 Qt 信号与槽了解信号与槽的写法就能解开这个谜了!在这里插入图片描述

相关内容

热门资讯

linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
C++ 机房预约系统(六):学... 8、 学生模块 8.1 学生子菜单、登录和注销 实现步骤: 在Student.cpp的...
A.机器学习入门算法(三):基... 机器学习算法(三):K近邻(k-nearest neigh...
数字温湿度传感器DHT11模块... 模块实例https://blog.csdn.net/qq_38393591/article/deta...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
Redis 所有支持的数据结构... Redis 是一种开源的基于键值对存储的 NoSQL 数据库,支持多种数据结构。以下是...
win下pytorch安装—c... 安装目录一、cuda安装1.1、cuda版本选择1.2、下载安装二、cudnn安装三、pytorch...
MySQL基础-多表查询 文章目录MySQL基础-多表查询一、案例及引入1、基础概念2、笛卡尔积的理解二、多表查询的分类1、等...
keil调试专题篇 调试的前提是需要连接调试器比如STLINK。 然后点击菜单或者快捷图标均可进入调试模式。 如果前面...
MATLAB | 全网最详细网... 一篇超超超长,超超超全面网络图绘制教程,本篇基本能讲清楚所有绘制要点&#...
IHome主页 - 让你的浏览... 随着互联网的发展,人们越来越离不开浏览器了。每天上班、学习、娱乐,浏览器...
TCP 协议 一、TCP 协议概念 TCP即传输控制协议(Transmission Control ...
营业执照的经营范围有哪些 营业执照的经营范围有哪些 经营范围是指企业可以从事的生产经营与服务项目,是进行公司注册...
C++ 可变体(variant... 一、可变体(variant) 基础用法 Union的问题: 无法知道当前使用的类型是什...
血压计语音芯片,电子医疗设备声... 语音电子血压计是带有语音提示功能的电子血压计,测量前至测量结果全程语音播报࿰...
MySQL OCP888题解0... 文章目录1、原题1.1、英文原题1.2、答案2、题目解析2.1、题干解析2.2、选项解析3、知识点3...
【2023-Pytorch-检... (肆十二想说的一些话)Yolo这个系列我们已经更新了大概一年的时间,现在基本的流程也走走通了,包含数...
实战项目:保险行业用户分类 这里写目录标题1、项目介绍1.1 行业背景1.2 数据介绍2、代码实现导入数据探索数据处理列标签名异...
记录--我在前端干工地(thr... 这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 前段时间接触了Th...
43 openEuler搭建A... 文章目录43 openEuler搭建Apache服务器-配置文件说明和管理模块43.1 配置文件说明...