Qt在模块依靠情况下资源文件名称和资源名称的使用限制

news/2025/3/31 3:27:41/

概述

Qt中使用添加资源文件的时候,对于资源文件名称的定义,往往是较为随意的。
但是当涉及到Qt库依赖的时候,则可能需要遵守一定的规则,否则可能出现文件找不到或者错误加载的问题。

环境

环境名称Qt 版本系统版本
LinuxQt 5.12.7 ,MSVC 2017win 11 x64
WindowsQt 5.12.7SUSE Linux 15.3

描述

如下图所示,模块A是一个可执行程序,模块B和模块C是两个库。模块之间存在依赖关系,如下:模块A依赖模块B和模块C,模块B也同时依赖模块C。
模块之间的依赖关系

当这三个模块都有资源文件,如下所示:
存在同名<a class=资源文件" />
其中,模块B和模块C的资源文件是相同的文件名称res.qrc
当这三个模块分别编译的时候,没有出现任何问题;实际在运行的时候,在Linux(尝试的系统是SUSE 15.3)上可能会出如下问题:

":/images/img3.png" Cannot find.

这样发现在Linux下会屏蔽同名的资源文件,使得其中的资源找不到;在Windows上没有找到类似问题。

为了解决以上问题,将依赖库中的同名资源文件名称修改成不同, 如下所示:
模块中的资源名称不同名
再次运行,发现上述问题已经解决。

再次观察,resB.qrcresC.qrc 中的资源存在同名问题,都存在:/images/img1.png文件 ,但是实际上两者是不同的资源,只不过是在各自模块中的名称相同。
当在模块B和模块C中都分别用到了各自的资源,在模块A中分别调用模块B和模块C中依赖的资源,这时候发现在Linux和Windows上调用都出现了问题,它们都将其识别成了同一个文件,例如:本应该各自模块显示各自的图像,现在显示成相同的图像了。
这时候就需要注意,即使在不同的存在依赖性的模块中,也需要区分资源文件的路径名称。

汇总

问题名称Linux 情况Windows情况建议
依赖模块中的资源文件名相同存在问题情况良好不同模块的资源文件使用不同的名称
资源文件中路径相同存在问题存在问题资源文件中,不同模块使用不同的资源前缀

http://www.ppmy.cn/news/1583639.html

相关文章

Linux冯诺依曼体系与计算机系统架构认知(8)

文章目录 前言一、冯诺依曼体系冯•诺依曼体系结构推导内存提高冯•诺依曼体系结构效率的方法你用QQ和朋友聊天时数据的流动过程与冯•诺依曼体系结构相关的一些知识 二、计算机层次结构分析操作系统(Operator System)驱动层的作用与意义系统调用接口(system call)用户操作接口…

给Web开发者的HarmonyOS指南01-文本样式

给Web开发者的HarmonyOS指南01-文本样式 本系列教程适合 HarmonyOS 初学者&#xff0c;为那些熟悉用 HTML 与 CSS 语法的 Web 前端开发者准备的。 本系列教程会将 HTML/CSS 代码片段替换为等价的 HarmonyOS/ArkUI 代码。 开发环境准备 DevEco Studio 5.0.3HarmonyOS Next API…

策略模式 (Strategy)

策略模式 (Strategy) 应用场景&#xff1a;用于处理不同的任务配置参数。在你的任务中&#xff0c;可能会有不同的任务类型&#xff0c;每个任务类型可能有不同的单位&#xff08;比如米、毫米&#xff09;或不同的处理方式。策略模式可以让你根据不同的任务类型选择不同的处理…

给语言模型增加知识逻辑校验智能,识别网络信息增量的垃圾模式

给LLM增加逻辑校验模型&#xff0c;赋予其批判性智能。 网络系统上信息不断增长&#xff0c;相当部分是非纯粹的人类生成&#xff0c;而是由各种模型生成输出。模型持续从网络取得信息&#xff0c;生成信息输出到网络&#xff0c;AI生态系统与网络信息池之间陷入信息熵增循环。…

华为HCIE学习指南,如何更好的学习HCIE?

新盟教育 专注华为认证培训十余年 为你提供认证一线资讯&#xff01; 在竞争激烈的ICT行业&#xff0c;华为HCIE认证犹如一颗璀璨的明珠&#xff0c;散发着耀眼的光芒。它不仅是对个人技术能力的高度认可&#xff0c;更是开启高薪职业大门的钥匙。然而&#xff0c;华为HCIE学习…

游戏引擎 Unity - Unity 主要窗口(层级、场景、游戏、检查器、项目、 控制台)

Unity Unity 首次发布于 2005 年&#xff0c;属于 Unity Technologies Unity 使用的开发技术有&#xff1a;C# Unity 的适用平台&#xff1a;PC、主机、移动设备、VR / AR、Web 等 Unity 的适用领域&#xff1a;开发中等画质中小型项目 Unity 适合初学者或需要快速上手的开…

Ajax与Axios,以及Apifox的入门使用

Ajax与Axios&#xff0c;以及Apifox的入门使用 作者&#xff1a;blue 时间&#xff1a;2025.3.20 文章目录 Ajax与Axios&#xff0c;以及Apifox的入门使用1.Ajax2.Axios3.Apifox的基本使用内容Path 参数定义语法用途 Query 参数定义语法用途 1.Ajax 概念&#xff1a;Asynchr…

node-red dashboard

安装&#xff1a; npm install node-red-dashboard 访问&#xff1a; http://127.0.0.1:1880/ui 1. 创建一个新的 Dashboard 页面: 在 Node-RED 编辑器中&#xff0c;拖动一个 ui_dashboard 节点到工作区&#xff0c;并将其连接到你的数据流。 2. 配置 Dashboard 节点: 双击…