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

相关推荐
basketball616几秒前
C++ 的 const 相关知识点总结
开发语言·c++
暖阳之下10 分钟前
学习周报四十五
学习
sealaugh3212 分钟前
react native(学习笔记第五课) 英语打卡微应用(4)- frontend的列表展示
笔记·学习·react native
阿文的代码库20 分钟前
对于C++中push_back的原理介绍与分析
开发语言·c++
枕星而眠24 分钟前
C++ 核心语法精讲:auto / 模板 / 命名空间 / 动态内存 从用法到面试
开发语言·c++·面试
yoyo_zzm31 分钟前
六大编程语言核心差异全解析
c语言·c++·spring boot·php
liu****31 分钟前
第16届国赛蓝桥杯大赛C/C++大学C组
c语言·数据结构·c++·算法·蓝桥杯
yoyo_zzm34 分钟前
四大编程语言对比:C/C++/C#/PHP
c++·c#·php
say_fall36 分钟前
Git完全入门指南-从概念到实战掌握版本控制的核心
linux·运维·服务器·git·学习
Cloud_Shy61840 分钟前
Python 数据分析基础入门:《Excel Python:飞速搞定数据分析与处理》学习笔记系列(第十章 Python 驱动的 Excel 工具 下篇)
笔记·python·学习·数据分析·excel·pandas