2024年3月

作用:让代码结构更清晰

步骤:

  1. 创建后缀为.h的头文件
  2. 创建后缀为.cpp的源文件
  3. 头文件写函数的声明,并导入实现所用的其他头文件
  4. 源文件写函数的定义与实现,并导入.h头文件

其中的原理细节:

  1. #include包含头文件实质上是在预处理阶段的时候对文件进行拼接,也就是代码的直接复制粘贴。项目编译时会对所有的cpp都进行编译,因此需要注意的是#include只能包含头文件(.h),而不能#include源文件(.cpp),不然会导致重复定义和实现函数,从而报错。当包含头文件时,由于头文件中仅仅进行了函数声明操作,所以包含头文件不会导致报错
  2. #pragma once包含该语句的文件只会被编译一次

静态设计时操作布局:

左侧:组件面板
中上:可视化待设计的预览
右上:对象检查器,可以看到其中所有的控件
右下:属性编辑器,可以看到类的继承关系。属性可能是从父类继承过来的,所以若有想要修改的属性,要到对应的父类(也可能是当前类所定义)去找
中下:信号和槽,Action编辑器

.pro是项目管理文件,代码的含义如下:

QT+=core gui // 包含core和gui模块
greaterThan(QT_MAJOR_VERSION, 4): QT+=widgets // 超过4版本就加上widgets
CONFIG+=c++17 // 通用配置选项,加上c++
SOURCES+=main.cpp\widget.cpp // 源文件
HEADERS+=widget.h // 头文件
FORMS+=widget.ui // UI文件

qnx: target.path=/tmp/$${TARGET}/bin // $$用于替换函数的前缀
else: unix:!android: target.path=/opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS+=target

qmake用于构建项目,根据.pro文件生成makefile文件,然后C++编译器可以根据makefile文件进行编译和链接
MOC: meta-object compiler meta层编译器,meta层是在C++基础上封装的层次结构
UIC: user interface compiler 用户接口编译器
qmake自动生成MOC和UIC构建规则,将代码编译为底层二进制

  1. 支持C++17标准
  2. 核心库变化:
    2.1 新的属性和绑定系统;
    2.2 支持unicode字符串;
    2.3 QVector和QList统一为QList类
  3. 新的图形架构:在OpenQL的基础上加入RHI,使得Qt可以使用本地的3D图形API,例如Linux的Vulkan、Windows的Direct 3D、MACOS的Metal
  4. 仍然支持qmake,但建议使用CMake
  5. 多媒体、网络、Qt Quick 3D模块的改进