news 2026/6/10 10:52:26

Qt-qrc机制简单介绍

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Qt-qrc机制简单介绍

我们使用setWindowIcon设置窗口图标的时候,要指明这个图片所在的路径(无论是绝对路径还是相对路径,一般是相对路径,因为用户的路径是不确定的),但是如果将图片保存在某个文件夹中,一旦被误删除,程序就再也无法生成图标了,而qrc机制就是为了解决这个问题。

qrc的解决方法很粗暴:将图片二进制保存在一个数组中,在编译的时候将其编译到可执行文件中去,做到“与目录无关”。使用qrc机制的具体过程如下:

首先创建一个后缀为.qrc的文件,qrc 文件是⼀种XML格式的资源配置文件, 它用XML记录硬盘上的图片文件和随意指定的资源名称(虚拟前缀+图片文件名)。应用程序通过资源名称来访问这些资源。

然后进入下面这样的页面

设置虚拟路径前缀

设置图片文件,默认qrc只能添加同级目录或者其子目录下的图片文件

出现下面这样的标识表示设置成功

然后我们编译文件,发现在可执行程序文件的统计目录下多了这样的文件:

打开qrc_my.cpp文件查看其中的内容如下(的确是二进制数组)

我们在程序中访问这个图片如下:

好,接下来我们捋顺一下qrc机制的思路

  1. 为了触发并支持Qt的qrc机制,我们需要创建一个.qrc文件,然后根据Qtcreactor的引导,创建虚拟路径前缀(其实就相当于虚拟路径)与实际图片之间的“映射”。
  2. 接下来我们在编译GUI程序时,Qt首先检查.qrc文件,读取图片文件,然后将图片二进制存储在.cpp文件中的二进制数组中,并通过某种手段,把虚拟路径与这个数组联系起来(这使得在程序中访问虚拟路径就相当于访问二进制数组,也就相当于访问图片)。
  3. 之后才开始编译程序(图片二进制的.cpp文件也被编译进可执行文件中去了)。至此我们的可执行文件中有了图片。
  4. 在GUI程序执行过程中,一但发现路径是以“:”开头,就知道这是使用了qrc机制的虚拟路径,接着读取虚拟路径,通过它找到图片二进制数组,显示图片。

正是因为上面的机制,编程者在编写图片访问路径时,路径必须是“:”+“虚拟路径前缀”+“图片文件名”

注:不仅是图片,音频文件等也可以利用qrc机制,包括我们的qss样式表的代码与样式分离也可以利用qss机制,这在Qss一节中有介绍

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 12:46:17

数字图像处理---压缩编码

核心比喻:整理行李箱 你要出远门,但行李箱很小。为了装下所有东西,你必须: 扔掉不必要的东西(比如多余的包装盒)。 用更高效的方式打包(比如把衣服卷起来而不是平铺)。 压缩编码…

作者头像 李华
网站建设 2026/6/10 12:46:16

小程序计算机毕设之基于springboot+小程序的自助停车缴费系统小程序的设计与实现基于SpringBoot的停车管理微信小程序系统(完整前后端代码+说明文档+LW,调试定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/6/9 17:40:18

小程序毕设项目:基于springboot+小程序的自助停车缴费系统小程序的设计与实现(源码+文档,讲解、调试运行,定制等)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/6/9 23:31:10

【计算机毕业设计案例】基于springboot+小程序的自助停车缴费系统小程序基于微信小程序的自助停车缴费系统停车场车位预约(程序+文档+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/6/10 3:09:49

深度解析!提示工程架构师与AI提示系统使用案例

深度解析!提示工程架构师与AI提示系统使用案例 一、引言:AI大模型时代,提示工程为何成为“桥梁”? 2023年以来,ChatGPT、GPT-4、Claude 3、Gemini等大模型的爆发,彻底改变了人类与AI交互的方式。但很多人忽…

作者头像 李华
网站建设 2026/6/10 12:46:40

内网共享神器,手机电脑一键互传大文件

软件介绍 今天给各位安利一款超省心的内网共享小工具,它叫 LocalSend(注:原文未明确命名,此处按功能特性暂拟名,实际使用时请参考官方名称)。这玩意儿比之前提过的"文件共享工具"、"MeFile…

作者头像 李华