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 文件

相关推荐
Xudde.1 小时前
班级作业笔记报告0x04
笔记·学习·安全·web安全·php
晓晓hh1 小时前
JavaSE学习——迭代器
java·开发语言·学习
Laurence1 小时前
C++ 引入第三方库(一):直接引入源文件
开发语言·c++·第三方库·添加·添加库·添加包·源文件
421!2 小时前
GPIO工作原理以及核心
开发语言·单片机·嵌入式硬件·学习
蒸汽求职2 小时前
机器人软件工程(Robotics SDE):特斯拉Optimus落地引发的嵌入式C++与感知算法人才抢夺战
大数据·c++·算法·职场和发展·机器人·求职招聘·ai-native
charlee442 小时前
最小二乘问题详解17:SFM仿真数据生成
c++·计算机视觉·sfm·数字摄影测量·无人机航测
Tanecious.3 小时前
蓝桥杯备赛:Day4-P9749 公路
c++·蓝桥杯
AI成长日志3 小时前
【笔面试算法学习专栏】双指针专题·简单难度两题精讲:167.两数之和II、283.移动零
学习·算法·面试
旖-旎3 小时前
分治(库存管理|||)(4)
c++·算法·leetcode·排序算法·快速选择算法
Tanecious.3 小时前
蓝桥杯备赛:Day3-P1102 A-B 数对
c++·蓝桥杯