四、Qt 的第一个demo

news2025/1/26 15:54:27

在上一篇章节里《三、Qt Creator 使用》,我们介绍了如何使用Qt Creator创建一个简单的带窗体的demo,在这一章节里,我们详细讲解一下这个demo的文件组成,及主函数,并在UI上加一些控件,实现一些简单的功能。

一、文件组成

很多同学对上一篇章节里《》创建的demo的文件组成不太了解,请看下图。

我们创建一个工程项目后,会在Test2文件夹下生成以下文件:

其实大家可能通过类型里的注释已经看出来区别了,有过C++基础的同学也应该很熟悉这个组成结构。

main.cpp 主函数代码文件(程序入口点)

mainwindow.cpp 主窗体代码文件

mainwindow.h 主窗体头文件

mainwindow.ui 主窗体文件(UI设计 控件)

Test2.pro 工程项目文件,双击此文件关联到Qt Creator,即打开Qt Creator

Test2.pro.user 工程项目的配置文件(编译器的配置等)

下边我们双击Test2.pro 打开 Qt Creator,点击左侧的 Test2.pro 工程文件,可以看到整个项目的组成。

二、主函数

接下来我们点击左侧项目树中的 Sources -> main.cpp进入到项目的主函数代码中。

有C++或C基础的同学会知道,一段代码想要运行,必须要有一个主函数,下图中右侧int main(int argc,char *argv[])是本项目的主函数入口。

让我逐行解释:

#include "mainwindow.h":这一行包含了名为 "mainwindow.h" 的头文件。通常,这个头文件包含了 MainWindow 类的声明,其中可能定义了主窗口的界面和功能。

#include :这一行包含了Qt框架的 QApplication 类的声明。QApplication 是Qt应用程序的主要类,负责处理应用程序的控制流和事件处理。

int main(int argc, char *argv[]):这是main函数的定义,是程序的入口点。argc 是命令行参数的数量,argv 是指向命令行参数字符串数组的指针。

QApplication a(argc, argv);:在这里创建了一个 QApplication 对象 a,用于管理应用程序的整个生命周期。

MainWindow w;:创建了一个 MainWindow 对象 w,这是应用程序的主窗口。当然我们也可以调用其他的窗体,比如在主窗体显示前,需要显示登录窗体,那么就在w.show之前调用登录窗体,并做逻辑判断,关于登录窗体我们会在以后的章节中介绍。如下图所示:

w.show();:通过调用 show() 方法,显示了主窗口。

return a.exec();:启动应用程序的事件循环,等待事件的发生。a.exec()会一直运行,直到应用程序被关闭。返回值是应用程序的退出码。

以上是一个标准的Qt框架应用程序的主函数,负责创建应用程序对象、主窗口对象,并启动应用程序的事件循环。在事件循环中,Qt会监听和处理用户输入、系统事件等,并根据这些事件执行相应的操作。

三、主窗体

再介绍完主函数后,大家应该能理解了主函数与主窗体及整个应用程序之间的关系。下边我们详细介绍主窗体。

我们在新建每一个QWidget或QDialog时,都会自动生成三个文件

mainwindow.cpp 主窗体代码文件

mainwindow.h 主窗体头文件

mainwindow.ui 主窗体文件(UI设计 控件)

分别对应下图中的位置,现在我们打开mainwindow.cpp 主窗体代码文件,默认会有构造函数MainWindow()和析构函数~MainWindow(),这两个函数的区别是,一个是开门的,一个是关门的。开门能用到的东西都写到构造函数中,如UI的初始化,关门需要将无用的资源释放,如指针变量、本窗体对象。

mainwindow.h 主窗体头文件,新建的函数、变量,需要在主窗体中声明,在代码文件中实现。

四、添加控件

下边我们双击左侧的mainwindow.ui 主窗体文件,打开主窗体的UI文件,进行UI设计。

从左侧的控件列表中,鼠标左键单击 Push Button后不要松开 ,通过拖拽的方式,拖到右侧的窗体面板中,松开鼠标左键,按钮就添加成功了。

在按钮上双击,可以修改按钮中的文本,也可以通过右下角的按钮属性列表修改按钮中的文本。

接下来我们通过以上的方式,添加文本框和标签页到窗体中。

五、添加按钮事件

接下来我们实现一个小功能,通过单击按钮给文本框中赋值。

鼠标右键单击按钮,选择“转到槽”。

选择clicked(),并点击 ok

Qt Creator会给头文件和代码文件自动添加 这个按钮的单击事件(信号和槽)。

我们在此处写代码到ui->时,会自动列出UI下所有控件的名称,包括 刚才添加的文本框的名称,如果没有自动列出,也可以先编译一下,因为刚才在UI中添加的文本框控件还没有和对应编译生成和moc_*文件对应,所以可以先用Ctrl+B编译一下程序,编译成功后,再写代码就可以ui->自动列出所有的控件。

在下图中此处写下如下代码,点击左侧的绿色三角,可以运行程序,也可以使用Ctrl+R运行程序,也可以F5按键调试程序。

程序正常运行后,点击按钮,我们可以看到文本框被赋值。

以下是我们做的第一个demo的源码,各位同学下载到本地运行时,需要确认编译完的路径。

https://download.csdn.net/download/zhouhui1982/88736785

注意代码所在路径及编译完的程序所在路径不要用中文,否则在编译时会出错误。

《写在最前边》icon-default.png?t=N7T8https://blog.csdn.net/zhouhui1982/article/details/135550465

《一、QT的前世今生》icon-default.png?t=N7T8https://blog.csdn.net/zhouhui1982/article/details/135550566

《二、QT下载、安装及问题解决(windows系统)》icon-default.png?t=N7T8https://blog.csdn.net/zhouhui1982/article/details/135550949


《三、Qt Creator使用》 icon-default.png?t=N7T8https://blog.csdn.net/zhouhui1982/article/details/135565568​​​​​​​​​​​​​​

《四、Qt的第一个demo》icon-default.png?t=N7T8https://mp.csdn.net/mp_blog/creation/editor/135566987

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1383486.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SDRAM小项目——写模块

写模块跟着视频看了一个多星期,一开始始终有点弄不清楚,现在记录一下理解的过程。 阅读文档信息: 首先阅读文档信息,了解SDRAM写过程的状态转换和时序图 SDRAM整体状态流程如图所示: 在SDRAM整体系统中&#xff0c…

谈⼀谈你对TCPIP四层模型,OSI七层模型的理解

TCP/IP四层模型 对比 OSI七层模型 OSI七层模型 为了增强通⽤性和兼容性,计算机⽹络都被设计成层次机构,每⼀层都遵守⼀定的规则。因此有了OSI这样⼀个抽象的⽹络通信参考模型,按照这个标准使计算机⽹络系统可以互相连接 物理层 通过⽹线、光…

南京观海微电子----时序分析基本概念(一)——建立时间

1. 概念的理解 以上升沿锁存为例,建立时间(Tsu)是指在时钟翻转之前输入的数据D必须保持稳定的时间。如下图所示,一个数据要在上升沿被锁存,那么这个数据就要在时钟上升沿的建立时间内保持稳定。 建立时间是对触发器而…

Akira勒索软件团伙及其策略的全面解析

Sophos MDR威胁情报团队曾于2023年5月发表过一篇博文,称Akira勒索软件“将1988年的时光带回”。起因是Akira会将受害者网站篡改为具有复古美学的页面,让人想起20世纪80年代的绿色屏幕控制台。而且,Akira的名字也可能取自1988年流行的同名动画…

HCIA的访问控制列表ACL

ACL:访问控制列表 -----控制列表(策略列表) 功能: 1:定义感兴趣的路由(控制层面) 可以定义感兴趣的路由,可以把感兴趣的路由抓取出来,给它做过滤,也可以改变…

polar CTF CB链

一、题目 二、解答 1、通过jar包,可以看到/user路由下有反序列化操作 看到存在commons-beanutils依赖且版本为1.9.2,可利用CB链Getshell。 使用ysoserial项目中的CommonsBeanutils1链写一个POC,注意确保ysoserial项目中的pom.xml中的comm…

寡年是否适合结婚?寡妇年结婚有什么禁忌吗?让程序来告诉你有多少人是寡妇年结婚的。

什么是寡年? 百度百科 原文:寡年-百度百科 指整年没有“立春”的日子就是“盲年”,俗称寡年。又名滑头年 社会上流传的“寡妇年”,是指整个农历年都没有立春的年份。以农历2005年的鸡年为例,立春在公历2月4日&…

Rust-内存安全

堆和栈 一个进程在执行的时候,它所占用的内存的虚拟地址空间一般被分割成好几个区域,我们称为“段”(Segment)。常见的几个段如下。 代码段。编译后的机器码存在的区域。一般这个段是只读的。bss段。存放未初始化的全局变量和静态变量的区域。数据段。…

java: 5-6 break

文章目录 1. break1.1 介绍1.2 语法和流程图1.3 入门练习1.4 细节说明1.5 练习 【老韩视频p137-】 1. break 看个需求:随机生成 1-100 的一个数,直到生成了 97 这个数,看看你一共用了几次? 【思路分析:循环,但是循环的次数不知道…

NLP论文阅读记录 - 2022 W0S | 基于Longformer和Transformer的提取摘要层次表示模型

文章目录 前言0、论文摘要一、Introduction1.1目标问题1.2相关的尝试1.3本文贡献 二.相关工作三.本文方法四 实验效果4.1数据集4.2 对比模型4.3实施细节4.4评估指标4.5 实验结果4.6 细粒度分析 五 总结思考 前言 A Hierarchical Representation Model Based on Longformer and …

【模型评估 04】A/B测试的陷阱

互联网公司中,A/B测试是验证新模块、新功能、新产品是否有效;新算法、新模型的效果是否有提升;新设计是否受到用户欢迎;新更改是否影响用户体验的主要测试方法。在机器学习领域中,A/B测试是验证模型最终效果的主要手段…

知乎x-zse-96算法分析

声明 本文以教学为基准、本文提供的可操作性不得用于任何商业用途和违法违规场景。 本人对任何原因在使用本人中提供的代码和策略时可能对用户自己或他人造成的任何形式的损失和伤害不承担责任。 如有侵权,请联系我进行删除。 这里只是我分析过程,以及一些重要点的记录,没有…

yolov5的完整部署(适合新人和懒人,一键安装)

第一步:安装Anaconda 下载并安装后,配置一下镜像 在这里面,看情况输入镜像源,这里我建议大家搞阿里云镜像源。 # 添加清华源 conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda conf…

零知识证明的最新发展和应用

PrimiHub一款由密码学专家团队打造的开源隐私计算平台,专注于分享数据安全、密码学、联邦学习、同态加密等隐私计算领域的技术和内容。 当企业收集大量客户数据去审查、改进产品和服务以及将数据资产货币化时,他们容易受到网络攻击威胁,造成数…

从Demo理解Thrift Thrift和Dubbo的区别

文章目录 安装demo尝试Thrift协议栈Thrift 与 Dubbo 的区别 字节里的RPC框架都是用的Thrift,我猜这主要原因有2: Thrift是Facebook开源的项目,平台中立Thrift支持跨语言调用,这非常适合字节Java、Go语言都存在的环境,语言中立 但…

手把手Docker部署Gitblit服务器

1拉取镜像 docker pull jacekkow/gitblit:v1.9.1 2.启动 docker run -d --name gitblit --restart always -p 10006:8080 -p 18443:8443 -p 19418:9418 -p 29418:29418 -v /data/gitblit/data:/opt/gitblit-data jacekkow/gitblit:v1.9.1 3.查看 默认账户/密码:admin/adm…

运算放大器相关知识总结(1)

1、 前言 最近做了一个小项目,这个项目是研发一款阻抗测量仪。这个阻抗测量仪可以测量人体在不同频率下的生物电阻抗,该设备的核心是模拟电路,技术难点是减小模拟电路噪声。该项目前前忙了2个多月,借着研发这个项目的机会把自己掌…

Jenkins-用户管理

用户管理 1 安装插件 2 选择安全策略为刚刚安装的插件 3 这个是安装插件以后会有的选项 4 增加一个角色 5 根据需要赋值角色的权限,并分配给用户

Protecting Intellectual Property of Deep NeuralNetworks with Watermarking

保护深度神经网络的知识产权与数字水印技术 ABSTRACT 深度学习是当今人工智能服务的关键组成部分,在视觉分析、语音识别、自然语言处理等多个任务方面表现出色,为人类提供了接近人类水平的能力。构建一个生产级别的深度学习模型是一项非常复杂的任务&a…

每日算法打卡:摘花生 day 14

文章目录 原题链接题目描述输入格式输出格式数据范围输入样例:输出样例: 题目分析示例代码 原题链接 1015. 摘花生 题目难度:简单 题目来源:《信息学奥赛一本通》 题目描述 Hello Kitty想摘点花生送给她喜欢的米老鼠。 她来…