在QT资源系统中,前缀比文件系统路径的优势是什么?
What is the advantage of prefix over filesystem path in Qt resource system?
qt资源文件.qrc允许将嵌入式文件拆分为不同的前缀
<RCC>
<qresource prefix="/qml">
<file alias="CustomWidget.qml">qml/CustomWidget.qml</file>
</qresource>
<qresource prefix="/icons">
<file alias="home.png">icons/home.png</file>
</qresource>
</RCC>
我经常看到开发人员用上面的示例重复使用前缀的文件系统层次结构。但我认为,对于呼叫者代码的观点,它与此相同:
<RCC>
<qresource>
<file>qml/CustomWidget.qml</file>
<file>icons/home.png</file>
</qresource>
</RCC>
在这两种情况下,您都可以使用C 中的文件与相同的语法:/qml/CustomWidget.qml
。
在文件系统路径上使用前缀 别名有任何优势吗?
这只是从实际文件系统对象中解除资源ID的一种方法。一旦定义了一个前缀和一个别名来引用资源,即使资源文件更改(即由其他名称和路径不同的文件替换(。
。说您在许多应用程序中共享了图像的存储库,您可以在A qrc 中引用文件:
<RCC>
<qresource prefix="/pics">
<file alias="logo">../../../../pictures/logos/logo-001.png</file>
</qresource>
</RCC>
代码在长文件路径上几乎是不可知论的,因此资源被引用了:
QPixmap pix(":/pics/logo");
如果需要不同的徽标,或者存储库已移动到其他位置,则必须编辑 qrc 文件:
<RCC>
<qresource prefix="/pics">
<file alias="logo">../../../new-repo/logos/logo-002.png</file>
</qresource>
</RCC>
此行为将文件路径重新映射到逻辑空间路径上,这意味着即使您有一个驻留在不同路径中的文件,它们也可以组合一个逻辑文件。
这项技术反映了C 或Java中名称空间的相同概念。
例如:
您有以下文件,但它们不在同一文件夹中。
|---bar
|---ca.cc
|---da.cc
|---foo
|---fa.cc
|---ga.cc
为了方便起见,您需要使文件访问更加一致,并且不影响文件的位置更改。
然后,QT资源重新映射技术应实现,这将看起来像以下内容:
|---uniFolder
|---ca.cc
|---da.cc
|---fa.cc
|---ga.cc
注意:因为您已将所有文件都放入一个逻辑文件中(实际上是一个相同的名称空间(,所以文件的名称不应相同。
相关文章:
- Paths.get( "abc/def.jpg" ) 在 C 和 C++ 中获取与操作系统无关的路径的等价物是什么?
- "-I" 和 "-L" 在添加到路径前面时是什么意思?
- "警告:并非所有控制路径都返回值"是什么意思?(C++)
- 在QT资源系统中,前缀比文件系统路径的优势是什么?
- 对于具有绝对路径的库的GCC行为是什么?
- 用CreateFile打开显示时,正确的路径是什么?
- 是什么让 clang 在包含路径的子目录中看起来?
- 确定两个文件路径引用同一文件对象的最佳方法是什么
- 可移植fstream文件路径的正确语法是什么
- 在C++中遍历二进制树中的每条路径的逻辑是什么
- curl_easy_setopt的默认路径是什么(卷曲、CURLOPT_CAINFO "cacert.pem");
- SHGetFolderPath 已弃用:检索 Windows 文件夹路径的替代方法是什么
- swig接口文件的正确sstream include路径是什么
- 在 c++ 中,知道路径是否引用文件夹或文件的最便宜的方法是什么?
- 组织一个C++游戏的最佳方式是什么?该游戏涉及用户在路径之间进行选择,以便在旅程中前进
- 确定给定路径是否包含路径分隔符的提升方式是什么
- 解析STD库作用域的路径是什么?
- 在源文件中指定include前缀与在编译器的搜索路径参数中指定include前缀的优缺点是什么
- 表示文件路径的guid字符串是什么?
- 将filesystem::path元素附加到另一个路径的最佳方法是什么?