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

QT的工程文件.pro文件

文章目录

  • 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 控件的基类(继承自 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推荐的命名规范

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

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

相关文章:

QT的工程文件.pro文件

文章目录 QT的工程文件.pro文件QT5中的基本模块Qt CoreQt GUIQt WidgetsQt QMLQt QuickQt NetworkQt SQLQt MultimediaQt ConcurrentQt WebEngineQt TestLib TARGET 可选择的模版CONFIG的配置项 QT的工程文件.pro文件 每一个QT项目都至少有一个.pro文件,用来配置项目…...

用 DeepSeek 高效完成数据分析与挖掘

一、DeepSeek 是什么? DeepSeek 是由深度求索推出的智能助手(当前版本 DeepSeek-R1),具备强大的自然语言理解、代码生成与数据分析能力。它支持 128K超长上下文,可处理复杂数据文档,并直接生成可运行的 Python 数据分析代码,是数据工作者的“AI副驾驶”。 二、DeepSeek…...

安科瑞防逆流方案落地内蒙古中高绿能光伏项目,筑牢北疆绿电安全防线

一、项目概况 内蒙古阿拉善中高绿能能源分布式光伏项目,位于内蒙古乌斯太镇,装机容量为7MW,采用自发自用、余电不上网模式。 用户配电站为35kV用户站,采用两路电源单母线分段系统。本项目共设置12台35/0.4kV变压器,在…...

stress 服务器压力测试的工具学习

一、stress 工具介绍 tress 是一种工具,可以对符合 POSIX 标准的操作系统施加可配置数量的 CPU、内存、I/O 或磁盘压力,并报告其检测到的任何错误。 stress 不是一个基准测试。它是由系统管理员用来评估其系统扩展性的工具,由内核程序员用来…...

在本地电脑中部署阿里 Qwen3 大模型及连接到 Elasticsearch

在今天的文章中,我将参考文章 “使用 Elastic 和 LM Studio 的 Herding Llama 3.1” 来部署 Qwen3 大模型。据测评,这是一个非常不错的大模型。我们今天尝试使用 LM Studio 来对它进行部署,并详细描述如何结合 Elasticsearch 来对它进行使用。…...

八股---7.JVM

1. JVM组成 1.1 JVM由哪些部分组成?运行流程? 难易程度:☆☆☆ 出现频率:☆☆☆☆ Java Virtual Machine:Java 虚拟机,Java程序的运行环境(java二进制字节码的运行环境)好处:一次编写,到处运行;自动内存管理,垃圾回收机制程序运行之前,需要先通过编译器将…...

C++性能优化指南

思维导图(转载) https://www.processon.com/view/5e5b3fc5e4b03627650b1f42 第 1 章 优化概述 1.1 优化是软件开发的一部分 优化更像是一门实验科学。 1.2 优化是高效的 1.3 优化是没有问题的 **90/10 规则:**程序中只有 10% 的代码…...

数据集-目标检测系列- 猴子 数据集 monkey >> DataBall

贵在坚持! * 相关项目 1)数据集可视化项目:gitcode: https://gitcode.com/DataBall/DataBall-detections-100s/overview 2)数据集训练、推理相关项目:GitHub - XIAN-HHappy/ultralytics-yolo-webui: ultralytics-yo…...

【RAG召回】bge实现向量相似度索引

sentence-transformers 是一个非常强大的 Python 框架,它可以将句子或段落转换成高质量、高信息密度的数字向量(称为“嵌入”或 Embeddings)。它厉害的地方在于,语义上相似的句子,其向量在空间中的距离也更近。 这使得…...

算法-数论

C-小红的数组查询(二)_牛客周赛 Round 95 思路:不难看出a数组是有循环的 d3,p4时,a数组:1、0、3、2、1、0、3、2....... 最小循环节为4,即最多4种不同的数 d4,p6时,a数组:1、5、3、…...

原型对象(Prototype)详解

原型对象(Prototype)详解 一、核心概念 本质:每个 JavaScript 对象(除 null 外)都有的内置属性作用:实现对象间的属性/方法继承(原型继承)存储位置:[[Prototype]] 内部属性(通过 __proto__ 或 Object.getPrototypeOf() 访问)二、关键特性图示 对象实例 (obj)│├─…...

MongoDB账号密码笔记

先连接数据库,新增用户密码 admin用户密码 use admin db.createUser({ user: "admin", pwd: "yourStrongPassword", roles: [ { role: "root", db: "admin" } ] })用户数据库用户密码 use myappdb db.createUser({ user: &…...

SQL导出Excel支持正则脱敏

SQL to Excel Exporter 源码功能特性核心功能性能优化安全特性 快速开始环境要求安装运行 API 使用说明1. 执行SQL并导出Excel2. 下载导出文件3. 获取统计信息4. 清理过期文件 数据脱敏配置支持的脱敏类型脱敏规则配置示例 配置说明应用配置数据库配置 测试运行单元测试运行集成…...

05.查询表

查询表 字段显示可以使用别名: col1 AS alias1, col2 AS alias2, … WHERE子句:指明过滤条件以实现“选择"的功能: 过滤条件: 布尔型表达式算术操作符:,-,*,/,%比较操作符:,<>(相等或都为空),<>,!(非标准SQL),>,>,<,<范围查询: BETWEEN min_num …...

基于深度强化学习的智能机器人导航系统

前言 随着人工智能技术的飞速发展&#xff0c;机器人在日常生活和工业生产中的应用越来越广泛。其中&#xff0c;机器人导航技术是实现机器人自主移动的关键。传统的导航方法依赖于预设的地图和路径规划算法&#xff0c;但在复杂的动态环境中&#xff0c;这些方法往往难以适应。…...

【第三十九周】ViLT

ViLT 摘要Abstract文章信息介绍提取视觉特征的方式的演变模态融合的两种方式四种不同的 VLP 模型Q&A 方法模型结构目标函数Whole Word Masking&#xff08;WWM&#xff09; 实验结果总结 摘要 本篇博客介绍了ViLT&#xff08;Vision-and-Language Transformer&#xff09;…...

代码随想录算法训练营第60期第六十天打卡

大家好&#xff0c;今天因为有数学建模比赛的校赛&#xff0c;今天的文章可能会简单一点&#xff0c;望大家原谅&#xff0c;我们昨天主要讲的是并查集的题目&#xff0c;我们复习了并查集的功能&#xff0c;我们昨天的题目其实难度不小&#xff0c;尤其是后面的有向图&#xf…...

数据结构——D/串

一、串的定义和基本操作 &#xfeff; 1. 串的定义 &#xfeff; &#xfeff; 1&#xff09;串的概念 &#xfeff; &#xfeff; 组成结构: 串是由零个或多个字符组成的有限序列&#xff0c;记为 &#xfeff;S′a1a2⋯an′Sa_1a_2\cdots a_nS′a1​a2​⋯an′​&#x…...

瀚文机械键盘固件开发详解:HWKeyboard.cpp文件解析与应用

&#x1f525; 机械键盘固件开发从入门到精通&#xff1a;HWKeyboard模块全解析 作为一名嵌入式开发老司机&#xff0c;今天带大家拆解一个完整的机械键盘固件代码。即使你是单片机小白&#xff0c;看完这篇教程也能轻松理解机械键盘的工作原理&#xff0c;甚至自己动手复刻一…...

Nginx+Tomcat负载均衡与动静分离架构

目录 简介 一、Tomcat基础部署与配置 1.1 Tomcat应用场景与特性 1.2 环境准备与安装 1.3 Tomcat主配置文件详解 1.4 部署Java Web站点 二、NginxTomcat负载均衡群集搭建 2.1 架构设计与原理 2.2 环境准备 2.3 Tomcat2配置&#xff08;与Tomcat1对称&#xff09; 2.4…...

AI+预测3D新模型百十个定位预测+胆码预测+去和尾2025年6月8日第102弹

从今天开始&#xff0c;咱们还是暂时基于旧的模型进行预测&#xff0c;好了&#xff0c;废话不多说&#xff0c;按照老办法&#xff0c;重点8-9码定位&#xff0c;配合三胆下1或下2&#xff0c;杀1-2个和尾&#xff0c;再杀4-5个和值&#xff0c;可以做到100-300注左右。 (1)定…...

LeetCode--25.k个一组翻转链表

解题思路&#xff1a; 1.获取信息&#xff1a; &#xff08;1&#xff09;给定一个链表&#xff0c;每k个结点一组进行翻转 &#xff08;2&#xff09;余下不足k个结点&#xff0c;则不进行交换 2.分析题目&#xff1a; 其实就是24题的变题&#xff0c;24题是两两一组进行交换&…...

css | class中 ‘.‘ 和 ‘:‘ 的使用 | 如,何时用 .is-selected{ ... } 何时用 :hover{...}?

省流总结&#xff1a;交互时的短暂视觉反馈 → 用 :hover&#xff0c;状态需要记录或切换 → 用类名如 .is-selected。 &#x1f9e0; 本质区别&#xff1a; 写法触发方式用途&.is-selected依赖 class 切换需要 JavaScript 控制状态&#xff0c;如选中、激活&:hover鼠…...

【第九篇】 SpringBoot测试补充篇

简介 本文介绍了SpringBoot测试中的五项关键技术&#xff1a;测试类专用属性加载、 测试类专用Bean配置、 表现层测试方法、测试类事务回滚控制、配置文件随机数据设置&#xff09;。这些技术可以有效隔离测试环境&#xff0c;确保测试数据不影响生产环境&#xff0c;同时提供了…...

springcloud SpringAmqp消息队列 简单使用

这期只是针对springBoot/Cloud 在使用SpringAmqp消息队列的时候遇到的坑。 前提 如果没有安装RabbitMQ是无法连接成功的&#xff01;所以前提是你要安装好RabbitMQ。 docker 安装命令 # 拉取docker镜像 docker pull rabbitmq:management# 创建容器 docker run -id --namera…...

Framework开发之IMS逻辑浅析1--关键线程及作用

关键线程:EventHub,InputReader,InputDispatcher EventHub: 由于Android继承Linux,Linux的思想是一切皆文件,而输入的类型不止一种(触碰&#xff0c;写字笔&#xff0c;键盘等)&#xff0c;每种类型都对应一种驱动设备&#xff0c;而每个硬件驱动设备又对应Linux的一个目录文件…...

The Quantization Model of Neural Scaling

文章目录 摘要1引言2 理论3 概念验证&#xff1a;一个玩具数据集3.1 “多任务稀疏奇偶校验”数据集3.2 幂律规模和新兴能力 4 拆解大型语言模型的规模定律4.1 单token损失的分布4.2 单基因&#xff08;monogenic&#xff09;与多基因&#xff08;polygenic&#xff09;的规模曲…...

数据源指的是哪里的数据,磁盘中还是内存中

在 MyDB 项目中&#xff0c;特别是这段缓存框架代码&#xff1a; T obj getForCache(key);以及它的上下文&#xff1a; AbstractCache 是一个抽象类&#xff0c;内部有两个抽象方法&#xff0c;留给实现类去实现具体的操作&#xff1a; protected abstract T getForCache(lon…...

系统思考:跳出症状看全局

明天将为华为全球采购认证管理部的伙伴们带来一场关于系统思考的深度课程&#xff01;通过经典的啤酒游戏经营决策沙盘&#xff0c;一起沉浸式体验如何从全局视角看待问题&#xff0c;发现单点最优并不等于全局最优。 这不仅是一次简单的课程&#xff0c;更是一次洞察系统背后…...

DeepSeek R1 V2 深度探索:开源AI编码新利器,效能与创意并进

最近&#xff0c;AI界迎来了一位神秘的“突袭者”——DeepSeek团队悄无声息地发布了其推理模型DeepSeek R1的重磅升级版V2&#xff08;具体型号R1-0528&#xff09;。这款基于MIT许可的开源模型&#xff0c;在原版R1的基础上进行了多项令人瞩目的改进&#xff0c;正以其强大的潜…...