文章目录
- QT的工程文件.pro文件
- QT5中的基本模块
- Qt Core
- Qt GUI
- Qt Widgets
- Qt QML
- Qt Quick
- Qt Network
- Qt SQL
- Qt Multimedia
- Qt Concurrent
- Qt WebEngine
- Qt TestLib
- TARGET 可选择的模版
- CONFIG的配置项
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 控件的基类(继承自 QWindow
和 QObject
)。
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
: 用于将数据库数据方便地展示在 QTableView
或 QListView
等视图中的模型类。
驱动:支持 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支持。 |
类名:⾸字⺟⼤写,单词和单词之间⾸字⺟⼤写;
函数名及变量名:⾸字⺟⼩写,单词和单词之间⾸字⺟⼤写;