Qt 资源系统(Qt Resource System)

news2025/1/9 2:02:15

1. Qt Resource System是什么?

        Qt 资源系统(Qt Resource System)是一种将图片、数据存储在二进制文件中的一套系统。构建应用程序需要的不仅仅是代码。通常你的界面会需要图标来做动作,你可能想要添加插图或品牌标识,或者你的应用程序可能需要加载数据文件来预填充小部件。这些数据文件与应用程序的源代码是分开的,但最终需要将其打包和分发,以便其工作。

        应用程序一些分散的数据文件是导致问题的常见原因。如果引用带有路径的数据文件,应用程序将无法正常工作,除非目标计算机上有完全相同的路径。当打包跨平台(Windows、macOS和Linux)应用程序时,这可能会变得更加棘手。

        Qt 资源系统是独立于平台的,因为无论是图片还是翻译文件等,都会被打包成二进制数据。你可以将这些二进制数据保存到可执行文件中,即“静态加载资源”;你也可以将这些二进制数据单独保存在一个文件中,即“动态加载资源”。

2. qcr文件-Qt资源配置文件

        qrc 文件是基于 XML 格式的资源系统配置文件,该文件中指定了各种资源的信息。

        指定的路径是 .qrc 文件所在目录的相对路径。注意: 列出的资源文件必须位于 .qrc 文件所在目录或者其子目录下。图标文件需要与qrc文件位于同一目录下或者在该目录的子目录。

        完整的将资源文件打包成二进制数据的流程是:写 qrc 文件 -> 用 rcc 编译 -> 二进制数据

2.1如何写 qrc 文件

有两种方式:本节重点介绍用 Qt Creator 写 qrc 文件。

  • 用 Qt Creator 写。
  • 纯手工写。

        1)在项目中添加 Qt Resource File,给资源文件起个名即可创建出一个空的 qrc 文件。此时文件中还没有资源信息,只有两行简单的标识符。(使用普通文本编辑器打开)

        2)使用资源编辑器打开qrc文件,首先添加前缀,再添加资源文件。保存效果如下:

实例:

2.2两种资源路径

假设已经加载好资源,访问这些资源的两种方式是:

  • 文件路径「:/images/about.png」
  • URL「qrc:///images/about.png」

3. 如何加载资源

        加载资源有两种,一种是直接将资源数据存储在可执行文件中(静态方式),另一种是将资源数据存储在单独的二进制文件中并由可执行文件调用(动态方式)。

3.1静态方式加载

        1)除了用 Qt Creator 在工程中添加 qrc 文件以外,需要在 pro 文件中加入 qrc 文件以便 qmake 能识别资源文件,一般这步会被自动添加。例如:

RESOURCES = resource.qrc  

        2)qmake 编译后会生成一个名为 qrc_main.cpp 的文件(qrc_ + qrc文件名),打开它我们会看到刚才我们的资源已经以静态数组的形式保存在了该文件中。最终该文件的数据会存入可执行文件中。

3.2 动态方式

        动态方式不需要写 pro 文件,需要手动用 rcc 工具编译 qrc 文件,然后用 QResource 类加载。备注:rcc 工具的使用请参考官方文档“Resource Compiler (rcc)”。

        1)手动用 rcc 工具编译 qrc 文件。

rcc -binary resource.qrc -o resource.rcc 

        2)在程序中使用 QResource 类加载。

QResource::registerResource("/path/resource.rcc");

其他:

        qrc文件的格式基于XML。因此,您可以使用XML样式进行注释:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1125696.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Boot中RedisTemplate的使用

当前Spring Boot的版本为2.7.6&#xff0c;在使用RedisTemplate之前我们需要在pom.xml中引入下述依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId><vers…

insert overwrite table:数据仓库和数据分析中的常用技术

一、介绍&#xff1a; INSERT OVERWRITE TABLE 是用于覆盖&#xff08;即替换&#xff09;目标表中的数据的操作。它将新的数据写入表中&#xff0c;并删除原有的数据。这个操作适用于非分区表和分区表。 二、使用场景&#xff1a; 1、数据更新&#xff1a;当您需要更新表中…

软考系列(系统架构师)- 2021年系统架构师软考案例分析考点

试题一 软件架构&#xff08;架构风格、质量属性&#xff09; 【问题1】&#xff08;9分&#xff09; 在架构评估过程中&#xff0c;质量属性效用树(utility tree)是对系统质量属性进行识别和优先级排序的重要工具。 请将合适的质量属性名称填入图1-1中(1)、(2)空白处&#xf…

教您2个方法,轻松学会如何克隆硬盘或分区!

为什么需要克隆硬盘或分区&#xff1f; 在现在&#xff0c;学会如何克隆硬盘或分区是很重要的&#xff0c;因为这项技能本身是很简单的&#xff0c;并且也能够为我们带来足够多的好处与便利。 备份恢复&#xff1a;通过克隆硬盘驱动器或分区&#xff0c;您可以创建…

企业文件加密软件!哪个好用?

天锐绿盾是一款专业的企业文件加密软件&#xff0c;提供了多种功能来保护企业文件的安全。它的主要功能包括文件加密、文件外发控制、打印内容监控、内网行为管理、外网安全管理、文件管理控制、邮件白名单管理和U盘认证管理等功能。 PC访问地址&#xff1a; https://isite.ba…

节奏达人疯狂猜歌双端流量主小程序开发

节奏达人疯狂猜歌双端流量主小程序开发 流量主小程序千千万&#xff0c;可以长期运营且留存高的&#xff0c;猜歌小程序必有一席之地。 好运营&#xff1a;依靠社交属性&#xff0c;可以快速短时间裂变。依靠短视频可以快速吸引玩家。 活跃度高&#xff0c;粘性高&#xff0…

0基础学习PyFlink——使用PyFlink的SQL进行字数统计

在《0基础学习PyFlink——Map和Reduce函数处理单词统计》和《0基础学习PyFlink——模拟Hadoop流程》这两篇文章中&#xff0c;我们使用了Python基础函数实现了字&#xff08;符&#xff09;统计的功能。这篇我们将切入PyFlink&#xff0c;使用这个框架实现字数统计功能。 PyFl…

深入解析i++和++i的区别及性能影响

在我们编写代码时&#xff0c;经常需要对变量进行自增操作。这种情况下&#xff0c;我们通常会用到两种常见的操作符&#xff1a;i和i。最近在阅读博客时&#xff0c;我偶然看到了有关i和i性能的讨论。之前我一直在使用它们&#xff0c;但从未从性能的角度考虑过&#xff0c;这…

微信小程序——后台交互

目录 后台准备 pom.xml 配置数据源 整合mtbatis 前后端交互 method1 method2 后台准备 pom.xml <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org…

第二章 16位微处理器

考点1&#xff1a;功能结构类型、寄存器结构的类型 8088/86寄存器的总结 有8个8位、8个16位通用寄存器 有6个状态标志和3个控制标志 将1MB存储空间分段管理,有4个段寄存器【CPU中】&#xff0c;对应程序中4种逻辑段【段首地址】 默认【DS】的情况允许改变,需要使用段超越前…

nginx安装详细步骤和使用说明

下载地址&#xff1a; https://download.csdn.net/download/jinhuding/88463932 详细说明和使用参考&#xff1a; 地址&#xff1a;http://www.gxcode.top/code 一 nginx安装步骤&#xff1a; 1.nginx安装与运行 官网 http://nginx.org/1.1安装gcc环境 # yum install gcc-c…

k8s-----9、pod 影响调度的因素

资源限制和节点选择器 1、pod资源限制2、节点选择器&#xff08;pod属性&#xff09;3、 节点亲和性(nodeAffinity)&#xff08;pod属性&#xff09;3.1 硬和软亲和性3.2 反亲和性 4、污点&#xff08;taint&#xff09;和污点容忍&#xff08;节点属性&#xff09;4.1 定义4.2…

Janus: Data-Centric MoE 通讯成本分析(2)

文章链接&#xff1a;Janus: A Unified Distributed Training Framework for Sparse Mixture-of-Experts Models 发表会议: ACM SIGCOMM 2023 (计算机网络顶会) 系统学习&#xff1a;Janus: 逆向思维&#xff0c;以数据为中心的MoE训练范式&#xff08;1&#xff09; 目录 前…

【Javascrpt】比较,逻辑运算符

目录 比较运算符 逻辑运算符 &&(与&#xff09; ||&#xff08;或&#xff09; 两真&#xff08;||左侧为真&#xff0c;||右侧为真&#xff09; 两假&#xff08;||左侧为假&#xff0c;右侧为假&#xff09; 一真一假&#xff08;||一侧为假&#xff0c;另一侧为…

接口自动化必学的20个难点,学完至少涨5k

难点1&#xff1a;接口文档的不完整性 当我开始设计接口自动化测试用例时&#xff0c;我发现接口文档非常不完整。有些必要的字段没有说明&#xff0c;有些接口没有文档&#xff0c;这给我带来了很大的困难。 解决方案&#xff1a;与开发人员进行沟通&#xff0c;尽可能补充接口…

【Java集合类面试十】、HashMap中的循环链表是如何产生的?

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;HashMap中的循环链表是如…

单片机矩阵键盘

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、什么是矩阵键盘&#xff1f;1.独立键盘2.矩阵键盘变化1变化2变化3 3. 通过变型&#xff0c;举一反三&#xff0c;就可以实现4*4的矩阵键盘扫描 二、使用步骤…

一文教你学会使用Cron表达式定时备份MySQL数据库

各位小伙伴大家好&#xff0c;今天我就来讲述一下作为一个运维&#xff0c;如何解放自己的双手去让服务器定时备份数据库数据&#xff0c;防止程序操作数据库出现数据丢失。 mysql_dump_script.sh脚本文件 #!/bin/bash#保存备份个数&#xff0c;备份7天数据 number7 #备份保存…

使用Kali进行实验---主机发现

主机发现 【实训目的】 掌握主机扫描的工作原理&#xff0c;学会使用ping等扫描工具&#xff0c;发现网络当中活跃的主机。 【场景描述】 在虚拟机环境下配置4个虚拟系统“Win XP1” “Win XP2” “Kali Linux”和“Metasploitable2”&#xff0c;使得4个系统之间能够相互通…

数据结构与算法第一课

文章目录 数据结构什么是数据结构数据结构相关单位 物理结构与逻辑结构物理结构逻辑结构 算法一个案例认识算法的重要性时间复杂度与空间复杂度时间复杂度事前计算时间复杂度与事后判断时间复杂度函数的渐进式变化常见函数的时间复杂度最坏时间与平均时间 空间复杂度 先看下目录…