QT的工程文件.pro文件

发布于:2025-06-09 ⋅ 阅读:(16) ⋅ 点赞:(0)

QT的工程文件.pro文件

  每一个QT项目都至少有一个.pro文件,用来配置项目中的一些基本信息,比如声明项目中使用到了哪些模块、拥有哪些头文件与源文件、采用C++11还是C++14标准等。
在这里插入图片描述

配置项 含义
QT 指定项目中需要使用到的所有模块。
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets 如果QT版本大于4,则需要添加widgets模块,该模块包含所有控件类。
TARGET 程序运行成功之后生成的可执行文件名,用=连接。
TEMPLATE 指定如何运行当前程序,默认值为app,表示当前程序是一个应用程序,可以直接编译、运行。常用的值还有lib,表示将当前程序编译成库文件。
DEFINES 宏定义。
SOURCES 指定项目中所包含的源文件,如果未在这里声明,该文件将不参与编译。
HEADERS 指定项目中所包含的头文件,如果未在这里声明,该文件将不参与编译。
FORMS 指定项目中所包含的ui文件,如果未在这里声明,该文件将不参与编译。
INCLUDEPATH 指指定头文件的存储路径。
CONFIG 项目的一些基础配置。

QT5中的基本模块

Qt Core

  核心功能,提供 Qt 框架的基础设施,不依赖于图形用户界面。

  关键类/功能:

    QObject: Qt 对象模型的基石,提供对象树管理、信号槽机制、事件处理。

    QCoreApplication: 非 GUI 应用程序的核心应用类。

    QString, QByteArray, QVariant: 强大的字符串和数据处理类。

    QFile, QDir, QFileInfo: 文件和目录操作。

    QSettings: 平台无关的应用程序设置持久化。

    QTimer: 定时器。

    QThread, QMutex, QWaitCondition: 多线程支持。

    QEventLoop, QAbstractEventDispatcher: 事件循环机制。

    容器类:QList, QVector, QMap, QHash, QSet 等(通常优先于 STL 容器,因与 Qt 框架集成更好)。

    元对象系统 (Meta-Object System):提供运行时类型信息、信号槽、属性系统等。

Qt GUI

  核心 GUI 功能,提供窗口系统集成、事件处理、OpenGL 和 OpenGL ES 集成、2D 图形、基本图像处理、字体和文本绘制等。是所有 GUI 相关模块的基础。

  关键类/功能:

    QGuiApplication: GUI 应用程序的核心应用类(不包含 Widgets)。

    QWindow: 表示屏幕上的一个基本窗口。

    QScreen: 访问屏幕信息。

    QOpenGLContext, QOpenGLFunctions: OpenGL 支持。

    QImage, QPixmap, QPainter: 图像处理、像素图绘制和 2D 绘图引擎(QPainter 是核心)。

    QFont: 字体处理。

    输入事件 (QMouseEvent, QKeyEvent 等)。

    剪贴板 (QClipboard)。

Qt Widgets

  传统桌面 UI 组件, 提供一套丰富的、可样式化的、基于 CPU 渲染的 UI 控件(按钮、文本框、列表、表格、菜单、工具栏、对话框等),用于构建经典的桌面风格应用程序。

  关键类/功能:

    QApplication: 基于 Widgets 的应用程序的核心应用类(继承自 QGuiApplication)。

    QWidget: 所有 UI 控件的基类(继承自 QWindowQObject)。

    QLabel, QPushButton, QLineEdit, QTextEdit, QComboBox, QListView, QTableView, QTreeView, QMainWindow, QDialog, QMenu, QToolBar 等:大量的预构建控件。

    布局管理 (QLayout, QHBoxLayout, QVBoxLayout, QGridLayout, QFormLayout)。

    样式表 (QStyle, Qt Style Sheets - QSS):用于自定义控件外观。

    模型/视图框架 (QAbstractItemModel, QAbstractItemView):用于分离数据与显示。

Qt QML

  QML 引擎和语言基础设施,提供运行 QML 文档的引擎、语言支持、基本类型和 QML 与 C++ 集成的基础设施。

  关键类/功能:

    QQmlEngine: 执行 QML 代码的环境。

    QQmlComponent: 封装一个 QML 组件定义。

    QQmlContext: 为 QML 组件提供作用域上下文。

    QQmlApplicationEngine: 简化加载 QML 应用主文件的引擎。

    QQuickView: 用于在窗口中显示 QML 场景的便捷类(通常用于快速原型或简单应用)。

    qmlRegisterType(): 将 C++ 类型注册到 QML 系统中。

Qt Quick

  声明式 UI 框架: 建立在 QML 和 Qt GUI 之上,提供了一套用于构建现代、流畅、动画丰富的用户界面的 QML 类型。通常利用硬件加速(如 OpenGL)进行渲染。

  关键类/功能:

    QQuickItem: 所有 Qt Quick 可视项(如 Rectangle, Text, Image, MouseArea)的基类(在 QML 中)。

    QQuickWindow: 渲染和管理 Qt Quick 场景的专用窗口。

    丰富的可视元素:Rectangle, Text, Image, BorderImage, AnimatedImage, ListView, GridView, PathView, TableView 等。

    交互元素:MouseArea, MultiPointTouchArea, KeyNavigation 等。

    状态和转换:State, Transition

    动画框架:PropertyAnimation, NumberAnimation, SequentialAnimation, ParallelAnimation 等 (Behavior, State 也依赖于此)。

    粒子系统 (ParticleSystem)。

    Canvas: 提供类似 HTML5 Canvas 的绘图 API。

Qt Network

  网络功能: 提供用于 TCP/IP 客户端-服务器编程、UDP、HTTP、WebSockets、网络代理、网络会话管理等的类。

  关键类/功能:

    QTcpSocket, QTcpServer: TCP 通信。

    QUdpSocket: UDP 通信。

    QNetworkAccessManager, QNetworkRequest, QNetworkReply: 高级 HTTP/FTP 请求处理(支持 REST API 调用、文件下载上传)。

    QNetworkProxy: 网络代理配置。

    QNetworkConfigurationManager, QNetworkSession: 管理网络连接和会话。

    QWebSocket: WebSocket 协议支持。

Qt SQL

  数据库集成: 提供统一的 API 来连接和操作各种 SQL 数据库。

  关键类/功能:

    QSqlDatabase: 表示一个数据库连接。

    QSqlQuery: 执行 SQL 语句和遍历结果集。

    QSqlTableModel, QSqlQueryModel: 用于将数据库数据方便地展示在 QTableViewQListView 等视图中的模型类。

    驱动:支持 SQLite, MySQL, PostgreSQL, ODBC, Oracle 等(部分驱动可能需要额外插件)。

Qt Multimedia

  多媒体功能: 提供访问音频、视频播放、录音、摄像头和收音机功能的 API。

  关键类/功能:

    QMediaPlayer: 播放音频和视频文件。

    QAudioOutput, QAudioInput: 低级音频播放和录音。

    QCamera: 访问摄像头设备。

    QVideoWidget, QGraphicsVideoItem: 显示视频内容(分别用于 Widgets 和 QML/Quick)。

    QSoundEffect: 播放低延迟音效。

    QAudioRecorder: 高级音频录音。

Qt Concurrent

  高级多线程 API: 提供易于使用的、基于高级操作的 API(如 map, filter, reduce)来编写多线程程序,简化并行处理,避免直接使用低级线程原语。

  关键类/功能:

    QtConcurrent::run(): 在单独线程中运行函数。

    QtConcurrent::map(), filter(), filtered(), filteredReduced(), mapped(), mappedReduced(): 对容器元素进行并行处理。

    QFuture, QFutureWatcher: 用于监控异步计算的结果和状态。

Qt WebEngine

  Qt WebEngine 是 Qt 框架提供的现代 Web 浏览器引擎集成模块,基于 Chromium(Google Chrome 和 Microsoft Edge 使用的开源浏览器引擎)。它允许开发者在 Qt 应用程序中嵌入完整的 Web 浏览器功能,支持 HTML5、CSS3、JavaScript 和现代 Web API。

  关键类/功能:

    QWebEnginePage:代表一个网页,处理页面加载、导航、JavaScript 执行等。

    QWebEngineView(Widgets)或 WebEngineView(QML):用于显示网页内容的视图组件。

    QWebEngineProfile:管理浏览器配置(如缓存、Cookie、HTTP 头等)。

    QWebEngineSettings:控制 Web 引擎行为(如启用 JavaScript、禁用图片等)。

    QWebEngineView:继承自 QWidget,用于在 Widgets 应用中显示网页。

    QWebEnginePage:管理单个网页的加载和交互。

    QWebEngineProfile:管理浏览器会话(如缓存、Cookie、用户代理)。

    WebEngineView:用于在 QML 中显示网页。

    WebEngineProfile:管理 Web 配置(如存储位置、HTTP 头)。

    WebEngineSettings:控制 Web 行为(如是否允许 JavaScript)。

Qt TestLib

  Qt TestLib 是 Qt 框架内置的单元测试框架(通常简称为 Qt Test),它提供了一套完整的工具用于编写和运行 C++ 单元测试、GUI 测试和性能基准测试。它是 Qt 官方推荐的测试解决方案,特别适合 Qt 应用程序和库的自动化测试。

  关键类/功能:

    单元测试:验证函数、类和模块的逻辑正确性。

    GUI 测试:模拟鼠标/键盘事件,测试 Qt Widgets 和 Qt Quick 界面。

    基准测试(Benchmarking):测量代码执行时间,优化性能。

    数据驱动测试(Data-Driven Testing):用多组输入数据运行同一测试逻辑。

    异常测试:检查代码是否按预期抛出异常。

    信号/槽测试:验证信号是否正确触发和连接。

TARGET 可选择的模版

选项 含义
app 建⽴⼀个应⽤程序的 makefile,默认项。
lib 建⽴⼀个库的 makefile。
vcapp 建⽴⼀个应⽤程序的VisualStudio项⽬⽂件。
vclib 建⽴⼀个库的VisualStudio项⽬⽂件。
subdirs 这是⼀个特殊的模板,它可以创建⼀个能够进⼊特定⽬录的makefile并且为它调⽤make的makefile。

CONFIG的配置项

选项 含义
release 项目以release模式构建。
debug 项目以debug模式构建。
debug_and_release 项目准备以debug和release两种模式构建。
debug_and_release_target 默认设置。如果也指定了debug_and_release,最终的debug和release构建在不同的目录。
build_all 指定了debug_and_release后,该项目会构建为debug和release模式。
autogen_precompile_source 自动生成一个.cpp文件,包含在.pro中指定的预编译头文件。
ordered 使用subdirs模板时,此选项指定应该按照目录列表的顺序处理它们。
precompile_header 可以在项目中使用预编译头文件的支持。
warn_on 编译器应该输出尽可能多的警告。
warn_off 编译器应该输出尽可能少的警告。
exceptions 启用异常支持。默认设置。
exceptions_off 禁用异常支持。
rtti 编启用RTTI支持。
rtti_off 禁用RTTI支持。
stl 启用STL支持。
stl_off 禁用STL支持。
thread 启用线程支持。当CONFIG包括qt时启用,这是缺省设置。
c++11 启用c++11支持。
c++14 启用c++14支持。
# QT推荐的命名规范

  类名:⾸字⺟⼤写,单词和单词之间⾸字⺟⼤写;

  函数名及变量名:⾸字⺟⼩写,单词和单词之间⾸字⺟⼤写;