Qt初识_项目文件解析

devtools/2024/10/15 22:02:14/

个人主页:C++忠实粉丝
欢迎 点赞👍 收藏✨ 留言✉ 加关注💓本文由 C++忠实粉丝 原创

Qt初识_项目文件解析

收录于专栏【Qt开发】
本专栏旨在分享学习Qt的一点学习笔记,欢迎大家在评论区交流讨论💌

目录

1. pro文件解析

2. widget.h 文件解析

3. main.cpp 文件解析

4. widget.cpp 文件解析

5. widget.ui 文件解析 


1. pro文件解析

工程新建好之后,在工程目录列表中有一个后缀为 ".pro" 的文件, ".pro" 文件就是工程文件 (project) ,它是 qmake 自动生成的用于生产 makefile 的配置文件。如图所示:

 双击进入该文件,该文件的核心内容如下:

QT += core gui // Qt 包含的模块

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets //大于 Qt4 版本才包含 widget 模块 TARGET = QtFirst //应用程序名生成的 .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。下面是可供选择的模 板:

⚫ app:建立一个应用程序的 makefile。这是默认值,所以如果模板没有被指定,这个将被使 用。

⚫ lib :建立一个库的 makefile。

⚫ vcapp:建立一个应用程序的 VisualStudio 项目文件。

⚫ vclib: 建立一个库的 VisualStudio 项目文件。

⚫ subdirs:这是⼀个特殊的模板,它可以创建一个能够进入特定目录的 makefile 并且为它调用 make 的 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 关于应用程序的配置信息。 

2. widget.h 文件解析

在Qt中,如果要使用信号与槽(signal 和 slot)的机制就必须加入 Q_OBJECT 宏

Ui::Widget *ui; 这个指针是用前面声明的 namespace Ui 里的 Widget 类定义的,所以指针 ui 是指向可视化设计的界面,后面要访问界面上的组件,都需要通过这个指针 ui 去访问。

3. 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 接受并处理用户和系统的事件并且把它们传递给适当的窗口部件。 

4. widget.cpp 文件解析

widget.cpp 文件是类 Widget 的实现代码,所有在窗体上要实现的功能添加在此文件中:

5. widget.ui 文件解析 

widget.ui 是窗体界面定义文件,是⼀个 XML 文件,定义了窗口上的所有组件的属性设置、布局,及其信号与槽函数的关联等。用 UI 设计器可视化设计的界面都由 Qt 自动解析,并以 XML 文件的形式保存下来。在设计界面时,只需在 UI 设计器里进行可视化设计即可,而不用管 widget.ui 文件是怎么生成的。 

 


http://www.ppmy.cn/devtools/126370.html

相关文章

Ruby XML, XSLT 和 XPath 教程

Ruby XML, XSLT 和 XPath 教程 1. 引言 Ruby 是一种动态、开放源代码的编程语言,广泛用于网页开发、数据分析和各种自动化任务。在处理 XML(可扩展标记语言)时,Ruby 提供了强大的库和工具,使得解析、转换和提取 XML …

【IC验证】随机约束

1.约束 (1)注意 一般随机约束只能在类中使用; (2)实现步骤 在定义变量时,用rand/randc关键字进行修饰; 定义约束; 创建并实例化类后,调用随机约束方法; &am…

浅谈C++之日志记录

在 C 中使用 log4net 进行日志记录,您需要遵循以下步骤: 安装 log4net: 首先,您需要在您的 .NET 项目中包含 log4net 库。通常,这可以通过 NuGet 包管理器来完成。 配置 log4net: 您需要创建一个配置文件…

发布-订阅模式(Publisher-Subscriber)

实际上,发布-订阅模式只是观察者模式的一个别称。 但是经过时间的沉淀,似乎他已经强大了起来,已经独立于观察者模式,成为另外一种不同的设计模式。在现在的发布订阅模式中,称为发布者的消息发送者不会将消息直接发送给…

python对weedfs的操作

1、weedfs的简介 如果你对weed储存有一定的理解也可以忽略 WeedFS(Weed File System)是一个开源的分布式文件系统,由Go语言编写,旨在解决海量文件存储和访问的问题。它采用了类似于Hadoop HDFS的分布式文件系统架构,…

【微服务】微服务注册:构建灵活的服务管理机制

目录 引言一、什么是微服务注册?1.1 服务注册中心的作用1.2 服务注册中心的工作原理1.3 示意图 二、常见的微服务注册中心2.1 各注册中心详细对比 三、微服务注册的实现方式3.1 Spring Cloud Netflix Eureka3.2 Consul3.3 Zookeeper3.4 etcd 四、微服务注册的注意事…

mysql存储过程

1、创建 CREATE DEFINERrootlocalhost PROCEDURE card.init_card(IN orgId bigint(20)) begin DECLARE card_user_id,if_has_org bigInt; //定义变量 END 2、入参出参 in、out 3、定义变量并且赋值 3.1、方法1 3.2、方法二 4、if语句,并且抛出异常 如果是为…

Android JNI调用.c文件

Android JNI调用.c文件 1.创建Android项目,创建一个jni目录来存放.c代码 2.CMakeLists.txt cmake_minimum_required(VERSION 3.10.2) project("MyApplication")add_library(native-lib SHARED native-lib.c)find_library(log-lib log)target_link_libraries