当前位置: 首页 > news >正文

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

概述

在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。
模块之间的依赖关系

当这三个模块都有资源文件,如下所示:
存在同名资源文件
其中,模块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情况建议
依赖模块中的资源文件名相同存在问题情况良好不同模块的资源文件使用不同的名称
资源文件中路径相同存在问题存在问题资源文件中,不同模块使用不同的资源前缀

相关文章:

  • 微服务架构-Feign声明式调用
  • BoomCut AI 技术创建本地化的营销视频
  • three入门,创建一个长方体、认识场景、模型、光源、相机?渲染器
  • 【蓝桥杯】真题 路径(数论+dp)
  • 苹果企业签名经常掉签吗?
  • 类与对象(三)
  • uv - Getting Started 开始使用 [官方文档翻译]
  • 1.认识Excel
  • LRU算法实现
  • 学习 - C++ 全栈聊天项目(1)架构概述和登录界面
  • 内核编程十三:进程状态详解
  • leetcode 用队列模拟栈
  • S32K144外设实验(七):FTM输出多路互补带死区PWM
  • 【MySQL】监控MySQL
  • C++值传递和引用传递
  • 【AI学习笔记】AI造神时代的潘式理论与智能进化
  • 定长内存池原理及实现
  • 电脑干货:万能驱动--EasyDrv8
  • Go 语言封装邮件发送功能
  • 亮数据爬取API爬取亚马逊电商平台实战教程
  • 国内做免费视频网站有哪些/软文写作案例
  • 360安全网址导航/南京企业网站排名优化
  • 高端自适应网站设计/营销网站搭建
  • 门户网站 建设/怎么知道自己的域名
  • 网站设计公司天津/一个新产品策划方案
  • html5网站建设公司/在线优化工具