欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 文旅 > 旅游 > 【Qt】qrc机制介绍

【Qt】qrc机制介绍

2025/3/20 12:52:45 来源:https://blog.csdn.net/2303_79015671/article/details/146291067  浏览:    关键词:【Qt】qrc机制介绍

🏠个人主页:Yui_
🍑操作环境:Qt Creator
🚀所属专栏:Qt

在这里插入图片描述

文章目录

  • 1. qrc机制介绍
  • 2. 创建qrc文件
  • 3. 代码演示
  • 4. 查看临时文件
  • 5. 总结

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

1. qrc机制介绍

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

2. 创建qrc文件

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

  1. 右键项目,创建一个Qt Resource File文件,文件名随便取
    qwidget_5.gif
  2. 在qrc编辑器,添加前缀
    image.png
    此处我们将前缀设置为/即可
    所谓的前缀,也可以理解成虚拟的目录,这个目录没有在你的电脑上真实存在,是Qt自己抽象出来的,qrc机制的本质就是把图片的二进制数据,转化成C++代码(最终就会在代码中看到很大的char数组,里面就是二进制数据)为了方便Qt代码访问这个图片,Qt就自己抽象出了虚拟的目录~
  3. 在资源编辑器中,点击add files添加资源文件,此处我们需要添加的yui.jpg
    image.png
    这个按钮在创建prefix之前是禁用的,创建好prefix之后就可以使用了,添加的文件就是添加到prefix下面
    注意:导入图片时,需要确保你导入的图片必须在resource.qrc文件的同级目录或者同级目录的子目录里面。
    image.png
    这个效果就说明成功~
    当我们需要在代码中访问qrc中管理的文件时,就需要在路径上带有:前缀
    下面看演示:

3. 代码演示

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

4. 查看临时文件

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

5. 总结

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

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词