首页 > 解决方案 > 为什么将“:/Icons/controller.png”给构造函数工作(这是有效的相对文件路径语法)?

问题描述

情况的细节并不重要,但特别是我正在用 .png 文件制作一个 QIcon 对象(Qt 库的一部分)。这个的构造函数需要一个应该是文件路径的字符串

我发现,我可以简单地给":/Icons/controller.png"构造函数提供类似的东西,而不是使用绝对路径,并且仍然可以正确检索和显示图标。

我的项目很大,所以我不会写出层次结构以及文件相对于其他所有内容的位置,但它们至少相隔 3 度。因此,我认为有某种我不知道的文件搜索机制。谁能猜出这里发生了什么?

标签: c++filefilepath

解决方案


:/路径是Qt 资源系统中的路径。

您有一个 QRC 文件,该文件已编译并与您的可执行文件捆绑在一起。它引用图像。

例如,您的 qrc 文件包含以下内容:

<RCC version="1.0">
    <qresource>
        <file>Icons/controller.png</file>
    </qresource>
</RCC>      

然后在您的构建过程中使用 RCC 编译器对其进行编译。该文件然后与您的 exe 链接。

默认资源会自动注册,但您也可以将资源编译到外部 RCC 包中,并在运行时使用QResource::registerResource("/path/to/myresource.rcc");


推荐阅读