前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【Qt】qrc机制介绍

【Qt】qrc机制介绍

作者头像
Yui_
发布2025-03-17 13:30:49
发布2025-03-17 13:30:49
3500
代码可运行
举报
文章被收录于专栏:Yui编程知识Yui编程知识
运行总次数:0
代码可运行

Qt中使用qrc机制帮我们自动完成一些任务,如上篇文章中的图标问题,可以更方便的来管理项目依赖的静态资源。

1. qrc机制介绍

qrc文件是一种XML格式的资源配置的文件,它用XML记录硬盘上的文件和对应指定的资源名称,应用程序通过资源名来访问这些资源。 在Qt开发过程中,可以通过将资源文件添加到项目中来方便访问和管理这些资源,这些资源文件可以位于qrc文件所在目录的同级或者其子目录下。 在构建程序的过程中,Qt会把资源文件的二进制数据转成cpp代码,编译到exe中,从而使得依赖资源变成“路径无关”。

2. 创建qrc文件

在项目中创建一个qrc文件(文件名不要带中文和特殊符号)

  1. 右键项目,创建一个Qt Resource File文件,文件名随便取
qwidget_5.gif
qwidget_5.gif
  1. 在qrc编辑器,添加前缀
image.png
image.png

此处我们将前缀设置为/即可 所谓的前缀,也可以理解成虚拟的目录,这个目录没有在你的电脑上真实存在,是Qt自己抽象出来的,qrc机制的本质就是把图片的二进制数据,转化成C++代码(最终就会在代码中看到很大的char数组,里面就是二进制数据)为了方便Qt代码访问这个图片,Qt就自己抽象出了虚拟的目录~

  1. 在资源编辑器中,点击add files添加资源文件,此处我们需要添加的yui.jpg
image.png
image.png

这个按钮在创建prefix之前是禁用的,创建好prefix之后就可以使用了,添加的文件就是添加到prefix下面 注意:导入图片时,需要确保你导入的图片必须在resource.qrc文件的同级目录或者同级目录的子目录里面。

image.png
image.png

这个效果就说明成功~ 当我们需要在代码中访问qrc中管理的文件时,就需要在路径上带有:前缀 下面看演示:

3. 代码演示

代码语言:javascript
代码运行次数:0
运行
复制
#include "widget.h"
#include "ui_widget.h"
#include <QIcon>
Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    QIcon icon(":/yui.jpg");//格式要求
    this->setWindowIcon(icon);
}

Widget::~Widget()
{
    delete ui;
}
image.png
image.png

编译过后,我们就可以看到qrc中导入的图片资源,被转成了这个qrc_resoutce.cpp这个c++文件。 这个文件存储在那堆临时文件当中,不知道怎么打开的话看这篇文章:【Qt】初始项目代码解释-CSDN博客的目录5

4. 查看临时文件

打开qrc_resoutce.cpp这个文件,你就可以看到一个超级大的char数组,里面存储的就是图片的二进制序列。 当Qt项目进行编译的时候,这个cpp文件就会被一起编译到exe中,当exe程序运行的时候,图片的数据也就被加载到了内存当中~

image.png
image.png

5. 总结

qrc机制在Qt编程中是十分常见的,qrc机制可以非常好的解决,绝对路径现对路径路径的问题,确保你的图片所在的路径在目标用户的机器上存在,确保你的图片不会被用户删除~ 不过如果你向上传几个GB的视频文件,那么qrc就是无能为力了。 同时我们还要知道,这种资源管理机制并未Qt所独有,很多开发框架都有类似的机制,比如Android的Resources的AssetManager也是类似的效果。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-03-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. qrc机制介绍
  • 2. 创建qrc文件
  • 3. 代码演示
  • 4. 查看临时文件
  • 5. 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档