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

相关推荐
悠哉悠哉愿意3 小时前
【物联网学习笔记】串口发送
笔记·物联网·学习
云边散步3 小时前
godot2D游戏教程系列二(9)
笔记·学习·游戏·游戏开发
观书喜夜长3 小时前
每日一练:攻防世界「easyupload文件上传漏洞」详细解析与防御
学习·web安全·网络安全
廋到被风吹走3 小时前
持续学习方向 低代码/平台工程
学习·低代码
·中年程序渣·3 小时前
Spring AI Alibaba入门学习(一)
人工智能·学习·spring
生活很暖很治愈3 小时前
Linux——UDP编程&通信
linux·服务器·c++·ubuntu
Engineer邓祥浩3 小时前
JVM学习笔记(1) 总述
jvm·笔记·学习
共享家95273 小时前
C++ string 类从原理到实战
开发语言·c++
y = xⁿ4 小时前
【从零开始学习Redis|第五篇】Redis 常见数据类型和应用场景
数据库·redis·学习·缓存