【Qt】—— 项⽬⽂件解析
目录
(一).pro⽂件解析
(二)widget.h⽂件解析
(三)main.cpp⽂件解析
(四)widget.cpp⽂件解析
(五)widget.ui⽂件解析
(一).pro⽂件解析
⼯程新建好之后,在⼯程⽬录列表中有⼀个后缀为".pro"的⽂件,".pro"⽂件就是⼯程⽂件(project),它是qmake⾃动⽣成的⽤于⽣产makefile的配置⽂件。
- 如图所⽰:

【解释说明】
双击进⼊该⽂件,该⽂件的核⼼内容如下:
- QT+=core gui //Qt包含的模块
- greaterThan(QT_MAJOR_VERSION,4):QT+=widgets //⼤于Qt4版本才包含widget模块
- TARGET=QtFirs //应⽤程序名⽣成的.exe程序名称
- TEMPLATE=app //模板类型,应⽤程序模板
- SOURCES+=main.cpp\ //源⽂件
- widget.cpp //源⽂件
- HEADERS+=widget.h //头⽂件
".pro"⽂件的写法如下:
- 1. 注释:从"#"开始,到这⼀⾏结束。
- 2. QT+=core gui //Qt包含的模块Qt5包含的模块.如下图所⽰:
3. greaterThan(QT_MAJOR_VERSION,4):QT+=widgets这条语句的含义是,如果
QT_MAJOR_VERSION⼤于4也就是当前使⽤的Qt5及更⾼版本)需要增加widgets模块。如果项⽬仅需⽀持Qt5,也可以直接添加"QT+=widgets"⼀句。不过为了保持代码兼容,最好还是按照QtCreator⽣成的语句编写: - 4. 指定⽣成的应⽤程序名:TARGET=QtDemo;
- 5. TEMPLATE=app //模板。告诉qmake为这个应⽤程序⽣成哪种makefile。下⾯是可供选择的模板:

- 6. ⼯程中包含的源⽂件:SOURCES+=main.cpp/widget.cpp
- 7. ⼯程中包含的头⽂件:HEADERS+=widget.h
- 8. ⼯程中包含的资源⽂件:RESOURCES+=painter.qrc
- 9. ⼯程中包含的"ui"设计⽂件:FORMS+=widget.ui
- 10. 配置信息:CONFIG+=c++11(使⽤c++11的特性)CONFIG⽤来告诉qmake关于应⽤程序的配置信息。
(二)widget.h⽂件解析
- 在Qt中,如果要使⽤信号与槽(signal和slot)的机制就必须加⼊Q_OBJECT宏;
- Ui::Widget*ui; 这个指针是⽤前⾯声明的namespace Ui⾥的Widget类定义的,所以指针ui是指向可视化设计的界⾯,后⾯要访问界⾯上的组件,都需要通过这个指针ui去访问

(三)main.cpp⽂件解析
使⽤Qt Creator新建任意⼯程之后,main.cpp⽂件中都会⾃动⽣成如下代码:

【解释说明】
1. Qt系统提供的标准类名声明头⽂件没有 .h 后缀;
2. Qt⼀个类对应⼀个头⽂件,类名就是头⽂件名;3. QApplication为应⽤程序类;QApplication a;(a为应⽤程序对象,有且仅有⼀个。)
- QApplication管理图形⽤⼾界⾯应⽤程序的控制流和主要设置。
- QApplication是Qt的整个后台管理的命脉。它包含主事件循环,在其中来⾃窗⼝系统和其它资源的所有事件处理和调度。它也处理应⽤程序的初始化和结束,并且提供对话管理。
- 对于任何⼀个使⽤Qt的图形⽤⼾界⾯应⽤程序,都正好存在⼀个QApplication对象,⽽不论这个应⽤程序在同⼀时间内是不是有0、1、2或更多个窗⼝。
4. myWidget w; //实例化窗⼝对象
5. w.show(); //调⽤show函数显⽰窗⼝
6. a.exec():程序进⼊消息循环,等待对⽤⼾输⼊进⾏响应。这⾥main()把控制权转交给Qt,Qt完成事件处理⼯作,当应⽤程序退出的时候exec()的值就会返回。在exec()中,Qt接受并处理⽤⼾和系统的事件并且把它们传递给适当的窗⼝部件。
(四)widget.cpp⽂件解析
widget.cpp⽂件是类Widget的实现代码,所有在窗体上要实现的功能添加在此⽂件中;

(五)widget.ui⽂件解析

widget.ui是窗体界⾯定义⽂件,是⼀个XML⽂件,定义了窗⼝上的所有组件的属性设置、布局,及其信号与槽函数的关联等。⽤UI设计器可视化设计的界⾯都由Qt⾃动解析,并以XML⽂件的形式保存下来。在设计界⾯时,只需在UI设计器⾥进⾏可视化设计即可,⽽不⽤管widget.ui⽂件是怎么⽣成的。
以上便是关于本期对Qt 项目文件解析的全部知识内容了!!!
相关文章:
【Qt】—— 项⽬⽂件解析
目录 (一).pro⽂件解析 (二)widget.h⽂件解析 (三)main.cpp⽂件解析 (四)widget.cpp⽂件解析 (五)widget.ui⽂件解析 (一).pro⽂…...
【Linux】静态库和动态库
动静态库 一、静态库1. 静态库概念2. 制作静态库(1)朴素方法 --- 不打包(2)对静态库打包 3. 使用静态库(1)朴素方法 --- 直接使用(2)使用打包好的静态库 二、动态库1. 动态库概念2. …...
LeetCode 0292.Nim 游戏:脑筋急转弯
【LetMeFly】292.Nim 游戏:脑筋急转弯 力扣题目链接:https://leetcode.cn/problems/nim-game/ 你和你的朋友,两个人一起玩 Nim 游戏: 桌子上有一堆石头。你们轮流进行自己的回合, 你作为先手 。每一回合,…...
ctfshow-web1~10-WP
web1 右键查看源码就能看到flag web2 打开网页提示无法查看源代码,右键也使用不了,那我们就在url前面加上view-source: view-source:http://83a83588-671e-4a94-9c6f-6857f9e20c2f.chall.ctf.show/ 访问后即可获得flag web3 右键源码也没看到信息,去查看一下请求头和响应…...
集合问题(并查集)
本题链接:登录—专业IT笔试面试备考平台_牛客网 题目: 样例1: 输入 4 5 9 2 3 4 5 输出 YES 0 0 1 1 样例2: 输入 3 3 4 1 2 4 输出 NO 思路: 这道题关键点在于。 当集合中有一个元素均存在于集合 A 和集合 B 的时…...
Ubuntu文件系统结构
Ubuntu文件系统结构 介绍 Ubuntu是一种备受欢迎的Linux发行版,其文件系统结构以及组织方式是每个使用者和系统管理员都应该了解的重要主题。本篇博客将带您深入探索Ubuntu文件系统的结构,以便更好地理解Linux操作系统的工作原理。 1. 根目录ÿ…...
vue element 组件 form深层 :prop 验证失效问题解决
此图源自官网 借鉴。 当我们简单单层验证的时候发现是没有问题的,但是有的时候可能会涉及到深层prop,发现在去绑定的时候就不生效了。例如我们在form单里面循环验证,在去循环数据验证。 就如下图的写法了 :prop"pumplist. i .device…...
前端开发:入门(一)
当我们开始学习前端开发时,首先接触到的是HTML(超文本标记语言)。HTML是构建网页结构的基础。 1. HTML(超文本标记语言) 介绍和基础语法 HTML,即超文本标记语言,是一种用于创建网页结构的标记…...
简单实验 java spring cloud 自定义负载均衡
1.概要 1.1 说明 这个是在前一个测试上的修改,所以这里只体现修改的内容。前一个测试的地址:检查实验 spring cloud nacos nacos-server-2.3.0-CSDN博客 1.2 记忆要点 1.2.1 引入对象 Autowired DiscoveryClient discoveryClient; 1.2.2 获取服务实…...
简单说说redis分布式锁
什么是分布式锁 分布式锁(多服务共享锁)在分布式的部署环境下,通过锁机制来让多客户端互斥的对共享资源进行访问/操作。 为什么需要分布式锁 在单体应用服务里,不同的客户端操作同一个资源,我们可以通过操作系统提供…...
什么是 Java 中的 IO 和 NIO?它们之间有什么区别?什么是 Java 中的内存管理和垃圾回收?常见的垃圾回收算法有哪些?
什么是 Java 中的 IO 和 NIO?它们之间有什么区别? 在 Java 中,IO(Input/Output)和NIO(New IO)都是用于处理输入输出操作的API。它们之间有以下区别: IO(传统IOÿ…...
【图论】基环树
基环树其实并不是树,是指有n个点n条边的图,我们知道n个点n-1条边的连通图是树,再加一条边就会形成一个环,所以基环树中一定有一个环,长下面这样: 由基环树可以引申出基环内向树和基环外向树 基环内向树如…...
如何快速捕获和验证用户软件需求,实现快速迭代
在软件开发过程中,快速捕获和验证用户需求,以及迅速迭代功能,是保持项目敏捷性和用户满意度的关键。下面将介绍一些建议,帮助你在软件开发过程中更有效地满足用户需求。 1. 深入沟通与用户互动 要捕获用户需求,必须与…...
爱上算法:每日算法(24-2月4号)
🌟坚持每日刷算法,😃将其变为习惯🤛让我们一起坚持吧💪 文章目录 [232. 用栈实现队列](https://leetcode.cn/problems/implement-queue-using-stacks/)思路CodeJavaC 复杂度 [225. 用队列实现栈](https://leetcode.cn/…...
【Node系列】创建第一个服务器应用
文章目录 一、node介绍二、node创建应用三、node创建应用步骤四、相关链接 一、node介绍 Node.js是一个基于Chrome V8引擎的JavaScript运行环境,可以用于构建高性能的网络应用程序。它采用事件驱动、非阻塞I/O模型,使得程序可以以高效地方式处理并发请求…...
Linux命令基础学习 (2月4日打卡
1. ls - 列出目录内容 命令格式:ls [选项] [文件/目录] 常用选项: -l:以详细列表格式显示-a:显示所有文件,包括以.开头的隐藏文件 2. mkdir - 创建新目录 命令格式:mkdir [选项] 目录名 常用选项&…...
Python 基础知识概览
Python是一种简洁、易学、强大的编程语言,广泛应用于各种领域,包括Web开发、数据分析、人工智能等。本文将介绍一些Python的基础知识,帮助初学者建立对这门语言的基本了解。 1. Python 的简介 Python是一种高级、面向对象、解释型的编程语言…...
Adobe Camera Raw for Mac v16.1.0中文激活版
Adobe Camera Raw for Mac是一款强大的RAW格式图像编辑工具,它能够处理和编辑来自各种数码相机的原始图像。以下是关于Adobe Camera Raw for Mac的一些主要特点和功能: 软件下载:Adobe Camera Raw for Mac v16.1.0中文激活版 RAW格式支持&…...
zabbix自定义监控项
zabbix自定义监控项 1.安装zabbix_get软件 [rootchang local]# yum install zabbix-get2.编辑自定义监控项文件 [rootchang ~]# vim /etc/zabbix/zabbix_agentd.d/cpu.conf UserParametercheck_cpu,top -bn 1 -i -c |grep id |cut -d , -f 4 | tr -d id #UserParameter表示…...
使用Pycharm在本地调用chatgpt的接口
目录 1.安装环境 2.建立多轮对话的完整代码(根据自己使用的不同代理需要修改端口(port)) 3.修改代码在自己的Pycharm上访问chagpt的api并实现多轮对话,如果不修改是无法成功运行的。需要确定秘钥和端口以保证正常访…...
[特殊字符] 智能合约中的数据是如何在区块链中保持一致的?
🧠 智能合约中的数据是如何在区块链中保持一致的? 为什么所有区块链节点都能得出相同结果?合约调用这么复杂,状态真能保持一致吗?本篇带你从底层视角理解“状态一致性”的真相。 一、智能合约的数据存储在哪里…...
iOS 26 携众系统重磅更新,但“苹果智能”仍与国行无缘
美国西海岸的夏天,再次被苹果点燃。一年一度的全球开发者大会 WWDC25 如期而至,这不仅是开发者的盛宴,更是全球数亿苹果用户翘首以盼的科技春晚。今年,苹果依旧为我们带来了全家桶式的系统更新,包括 iOS 26、iPadOS 26…...
可靠性+灵活性:电力载波技术在楼宇自控中的核心价值
可靠性灵活性:电力载波技术在楼宇自控中的核心价值 在智能楼宇的自动化控制中,电力载波技术(PLC)凭借其独特的优势,正成为构建高效、稳定、灵活系统的核心解决方案。它利用现有电力线路传输数据,无需额外布…...
【Redis技术进阶之路】「原理分析系列开篇」分析客户端和服务端网络诵信交互实现(服务端执行命令请求的过程 - 初始化服务器)
服务端执行命令请求的过程 【专栏简介】【技术大纲】【专栏目标】【目标人群】1. Redis爱好者与社区成员2. 后端开发和系统架构师3. 计算机专业的本科生及研究生 初始化服务器1. 初始化服务器状态结构初始化RedisServer变量 2. 加载相关系统配置和用户配置参数定制化配置参数案…...
现代密码学 | 椭圆曲线密码学—附py代码
Elliptic Curve Cryptography 椭圆曲线密码学(ECC)是一种基于有限域上椭圆曲线数学特性的公钥加密技术。其核心原理涉及椭圆曲线的代数性质、离散对数问题以及有限域上的运算。 椭圆曲线密码学是多种数字签名算法的基础,例如椭圆曲线数字签…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...
深度学习水论文:mamba+图像增强
🧀当前视觉领域对高效长序列建模需求激增,对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模,以及动态计算优势,在图像质量提升和细节恢复方面有难以替代的作用。 🧀因此短时间内,就有不…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...
GitHub 趋势日报 (2025年06月06日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 590 cognee 551 onlook 399 project-based-learning 348 build-your-own-x 320 ne…...
