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

server/2025/3/31 6:48:34/

概述

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/server/179713.html

相关文章

python 游戏开发cocos2d库安装与使用

Cocos2d-x 是一个广泛使用的开源游戏开发框架&#xff0c;支持多种编程语言&#xff0c;包括 Python。对于 Python 开发者来说&#xff0c;通常使用的是 Cocos2d-py 或者更现代的 Cocos2d-x 的 Python 绑定版本。这里我将指导你如何安装和开始使用 Cocos2d-py。 安装步骤 安装…

分布式爬虫框架Scrapy-Redis实战指南

引言 在当今数字化的时代背景下&#xff0c;互联网技术的蓬勃兴起极大地改变了旅游酒店业的运营模式与市场格局。作为旅游产业链中的关键一环&#xff0c;酒店业的兴衰与互联网技术的应用程度紧密相连。分布式爬虫技术&#xff0c;尤其是基于 Scrapy 框架的 Scrapy-Redis 扩展…

Redis解决缓存击穿问题——两种方法

目录 引言 解决办法 互斥锁&#xff08;强一致&#xff0c;性能差&#xff09; 逻辑过期&#xff08;高可用&#xff0c;性能优&#xff09; 设计逻辑过期时间 引言 缓存击穿&#xff1a;给某一个key设置了过期时间&#xff0c;当key过期的时候&#xff0c;恰好这个时间点对…

Nginx 解决具有不安全、不正确或缺少 SameSite 属性的 Cookie方案

针对Nginx中Cookie的SameSite属性配置问题&#xff0c;以下是综合解决方案及注意事项&#xff1a; 一、基础配置方法 全局设置Cookie属性‌&#xff08;适用于Nginx直接生成Cookie&#xff09; 在nginx.conf的location块中通过add_header指令添加&#xff1a; add_header Se…

STM32--SPI通信讲解

前言 嘿&#xff0c;小伙伴们&#xff01;今天咱们来聊聊STM32的SPI通信。SPI&#xff08;Serial Peripheral Interface&#xff09;是一种超常用的串行通信协议&#xff0c;特别适合微控制器和各种外设&#xff08;比如传感器、存储器、显示屏&#xff09;之间的通信。如果你…

论文阅读笔记——Diffuser,Diffusion Policy

Diffuser Diffuser 论文 将轨迹预测问题转化为基于扩散模型的条件生成问题&#xff0c;通过概率框架统一了动力学约束与目标优化。 轨迹表示&#xff08;state&#xff0c;action&#xff09;&#xff1a; τ ( s 0 s 1 … … s T a 0 a 1 … … a T ) \tau \begin{pmatri…

【Unity】 HTFramework框架(六十三)SerializableDictionary可序列化字典

更新日期&#xff1a;2025年3月26日。 Github 仓库&#xff1a;https://github.com/SaiTingHu/HTFramework Gitee 仓库&#xff1a;https://gitee.com/SaiTingHu/HTFramework 索引 一、SerializableDictionary可序列化字典1.使用SerializableDictionary2.实现思路 二、Serializ…

3.使用epoll实现单线程并发服务器

目录 1. epoll的概述 2. 多线程与epoll的处理流程 2.1 多线程处理流程 2.2 epoll处理流程 3. epoll与多线程的比较 4. epoll的操作函数 4.1 epoll_create() 4.2 epoll_ctl() 4.3 epoll_wait() 5. 示例代码 6. epoll的工作模式 7. 使用O_NONBLOCK防止阻塞 8.运行代…