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

【Qt】4.项目文件解析

文章目录

  • 1. 项目文件解析
    • 1.1 .pro 文件解析
    • 1.2 widget.h 文件解析
    • 1.3 main.cpp 文件解析
    • 1.4 widget.cpp 文件解析
    • 1.5 widget.ui 文件解析


1. 项目文件解析

1.1 .pro 文件解析

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

a622cf6f9516c96fd3b2f567a308d2fa

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

QT       += core gui  # Qt包含的模块greaterThan(QT_MAJOR_VERSION, 4): QT += widgets  # 大于Qt4版本才包含widget模块CONFIG += c++11       # 启用C++11标准# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0SOURCES += \          # 源文件列表main.cpp \mylabel.cpp \widget.cppHEADERS += \          # 头文件列表mylabel.h \widget.hFORMS += \            # UI设计文件列表widget.ui# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

还有两行在我的版本里没有,但是其他版本可能有:

TARGET = QtFirst      # 应用程序名生成的.exe程序名称
TEMPLATE = app        # 模板类型,应用程序模板

“.pro” 文件的写法如下:

  1. 注释:从 “#” 开始,到这一行结束。
  2. QT += core gui // Qt 包含的模块 Qt5 包含的模块如下图所示:

5548946812c4f27ef9ab14733ceef5bb

  1. greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 这条语句的含义是,如果 QT_MAJOR_VERSION 大于 4 也就是当前使用的 Qt5 及更高版本) 需要增加 widgets 模块。如果项目仅需支持 Qt5 , 也可以直接添加 “QT += widgets” 一句。不过为了保持代码兼容 ,最好还是按照 QtCreator 生成的语句编写。
  2. 指定生成的应用程序名:TARGET = QtDemo
  3. TEMPLATE = app //模板。告诉 qmake 为这个应用程序生成哪种 makefile。下面是可供选择的模板:
  • app:建立一个应用程序的 makefile。这是默认值,所以如果模板没有被指定,这个将被使用。
  • lib :建立一个库的 makefile
  • vcapp:建立一个应用程序的 VisualStudio 项目文件。
  • vclib: 建立一个库的 VisualStudio 项目文件。
  • subdirs:这是一个特殊的模板,它可以创建一个能够进入特定目录的 makefile 并且为它调用 makemakefile
  1. 工程中包含的源文件:SOURCES += main.cpp/widget.cpp
  2. 工程中包含的头文件:HEADERS += widget.h
  3. 工程中包含的资源文件:RESOURCES += painter.qrc
  4. 工程中包含的 “ui” 设计文件:FORMS += widget.ui
  5. 配置信息:CONFIG += c++11 (使用 c++11 的特性) CONFIG 用来告诉 qmake 关于应用程序的配置信息。

1.2 widget.h 文件解析

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

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

15f1f7dac68e665e5b131cdf59cbed90


1.3 main.cpp 文件解析

使用 Qt Creator 新建任意工程之后,main.cpp 文件中都会自动生成如下代码:

813f5ede8ca34e778bf31fde048b358c

解释:

  1. Qt 系统提供的标准类名 声明头文件没有 .h 后缀;
  2. Qt 一个类对应一个头文件,类名 就是 头文件名;
    • QApplication 为应用程序类;QApplication a;(a为应用程序对象,有且仅有一个。)
    • QApplication 管理图形用户界面应用程序的控制流和主要设置。
    • QApplication 是 Qt 的整个后台管理的命脉。它包含主事件循环,在其中来自窗口系统和其它资源的所有事件处理和调度。它也处理应用程序的初始化和结束,并且提供对话管理。
    • 对于任何一个使用 Qt 的图形用户界面应用程序,都正好存在一个 QApplication 对象,而不论这个应用程序在同一时间内是不是有 0、1、2 或更多个窗口。
  3. myWidget w; //实例化窗口对象
  4. w.show(); //调用show函数显示窗口
  5. a.exec() :程序进入消息循环,等待对用户输入进行响应。这里 main()把控制权转交给Qt,Qt 完成事件处理工作,当应用程序退出的时候 exec() 的值就会返回。在 exec() 中,Qt 接受并处理用户和系统的事件并且把它们传递给适当的窗口部件。

1.4 widget.cpp 文件解析

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

407f3c0e9f35181674e3e9757bc07890


1.5 widget.ui 文件解析

9635a5e89b615847e63f5b741a2c6794

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

http://www.dtcms.com/a/486053.html

相关文章:

  • Redis-布隆过滤器BloomFilter
  • 网站建设找至尚网络深圳制作企业网站
  • 网页是网站吗苏州刚刚发生的大事
  • WPF中RelayCommand的实现与使用详解
  • 百度天气:空气质量WebGIS可视化的创新实践 —— 以湖南省为例
  • Flutter---GridView+自定义控件
  • OJ竞赛平台----C端题目列表
  • 【完整源码+数据集+部署教程】行人和斑马线检测系统源码和数据集:改进yolo11-RFCBAMConv
  • 做海淘的网站做海淘的网站网站建设案例步骤
  • [Zer0pts2020]Can you guess it?
  • Go 通道非阻塞发送:优雅地处理“通道已满”的场景
  • 设计模式【工厂模式和策略模式】
  • 【Go】P6 Golang 基础:流程控制
  • Perl 基础语法
  • 酒店网站模板网站开发好的语言
  • C++入门——多态
  • 用数据绘图(1):用 Highcharts 打造你的数据艺术世界
  • Hadoop面试题及详细答案 110题 (96-105)-- Hadoop性能优化
  • 监控系统理论与实践:从认知到Zabbix入门
  • ROS 传感器模块的通用架构设计与跨中间件扩展实践
  • 措美网站建设游戏网站开发名字
  • openwrt 环境安装
  • iis 发布网站内部服务器错误东莞沙田门户网站建设
  • 订单 API 接口调试常见问题排查:3 类高频问题 + 落地解决方案
  • JavaWeb--使用JDBC操作数据库(一)
  • 【Web开发】待办事项列表
  • Linux IIO研究(二)
  • 浙江建设厅网站那三类人员爱给网官网免费素材
  • Spring Boot整合Apache Shiro权限认证框架(实战篇)
  • Rust 错误处理