QT前置2 可视化文件,QRC文件两种处理

一.可视化文件

1. .ui文件

(1)概念.ui = Qt 可视化界面设计文件,会自动转成 C++ 界面类给你调用

.ui文件是可视化界面,转化成可编译文件

UI文件通过UIC的工具变成 .cpp的文件

.cpp再通过编译器变成.o文件

利用UI控制器布局园的计算器:Label:用户可以看见的东西,这个标签可以替换成字/图片

这里.cpp生成.o文件,存储在链接器中,这样文件不管在哪运行,都不影响可行性文件渲染效果

二.QRC文件

1.概念

QRC文件:属于QT的RCC子系统

QRC文件:QT的资源文件,XML文本文件

QT进行图片的操作:直接将图片等可视化文件接入到.exe,当其他人应用时图片路径上可能出些问题,避免这个问题引出一个文件,称为QRC,将图片变成可以编译的源文件(xxx.cpp,五核心代码)

1.2作用:

资源清单,告诉编译器,将图标图片等打包进exe/dll

访问路径:代码里用 :/images/logo.png(举例)

1.3注意:

图片路径最好放在源码文件中,这样方便写相对路径

2.管理QRC文件方式(图片等加载)

2.1 cmake+qt_add_resources方式

源码

qt_add_resources(ex01 imageresources

PREFIX "/images" # 虚拟路径前缀

FILES xyz/smile.png # 本地图片路径(相对项目根目录)

)

核心:CMake 自动调用 rcc 把 smile.png 打包到 exe 中,代码里用 :/images/xyz/smile.png 访问

PREFIX "/images"在CMake中的意思

是否可以修改?------ 完全可以(且推荐按项目规范改)

PREFIX 的值是自定义的,你可以根据项目需求改成任意合法的路径格式,核心原则是:

合法格式:必须以 / 开头,名称只能包含字母、数字、下划线,比如 /icons、/res、/ui/img 都可以;

语义清晰:前缀要和资源类型匹配,比如

图片用 /images

图标用 /icons

样式表用 /styles,方便维护

注意

不需要开启 CMAKE_AUTORCC ON(开启也不冲突,但属于冗余配置)

2.2 QT资源文件.qrc + cmake直接添加

源码

创建 .qrc 文件(如 res.qrc)

<RCC>

<qresource prefix="/images">

<file>xyz/smile.png</file>

</qresource>

</RCC>

cmake中

(1)set(CMAKE_AUTORCC ON) 当做开关

(2)qt_add_executable(ex01

hello.cpp

res.qrc

)

**代码中访问方式不变:**QPixmap(":/images/xyz/smile.png")

Qt 资源系统支持的所有文件类型(通用)

不管是 qt_add_resources、RCC 工具,还是直接加载本地文件,都能处理以下类型的文件

CMAKE_AUTORCC 是 CMake 提供的自动处理 Qt 资源文件的开关,开启后:

你只需要将 .qrc 文件直接添加到 add_executable/add_library 中,CMake 会自动调用 rcc 工具编译资源文件,无需手动调用 qt_add_resources

需先通过该函数编译 .qrc 生成资源文件的 C++ 代码,再将生成的目标添加到可执行文件中;

适用场景:需要自定义资源编译参数(如指定资源前缀、压缩方式),或兼容老版本项目

核心区别

只是「是否打包到 exe」:

加载"配置文件,翻译文件,ui界面,自定义字体文件,QSS样式表,音视频,脚本"

加载方式:qt_add_resources(打包到 exe)

优点: 无需附带文件、不易丢失、安全

缺点: 修改资源需重新编译

适合场景: 发布版程序、核心静态资源

加载方式: RCC 手动编译(.rcc 文件)

优点: 资源可单独更新、减小 exe 体积

缺点: 需附带 .rcc 文件

相关推荐
xian_wwq4 分钟前
【学习笔记】Prompt Engineering 没死,只是它不再够用了-2/16
笔记·学习·prompt
≮傷£≯√17 分钟前
Opencv VideoCapture
qt·opencv
天吾cc18 分钟前
RTT-ADC
单片机·嵌入式硬件·学习
烟花落o23 分钟前
C++ 从 C 到进阶 ②:引用、inline 、nullptr
c++·引用·inline·nullptr·c++入门
kaixin_啊啊26 分钟前
test_机器学习算法学习
学习·算法·机器学习
liulilittle27 分钟前
MOE路由:路由(logits: top-k/8)
c++·人工智能·算法·机器学习·llm
旖旎夜光29 分钟前
LeetCode 11:盛最多水的容器(双指针问题) —— 题解
数据结构·c++·算法·leetcode·双指针
m4Rk_41 分钟前
【论文阅读】Agent 记忆机制(34):MemoryBank——用遗忘曲线管理可强化的长期对话记忆
论文阅读·人工智能·学习·开源·github
210Brian1 小时前
STM32学习笔记(五)EXTI外部中断(上)
笔记·stm32·学习
辣知1 小时前
辣知·化智19 人类文明的轮回
学习