为什么将“:/Icons/controller.png”赋予构造函数有效(该有效的相对文件路径语法)?

时间:2019-07-10 14:38:55

标签: c++ file filepath

具体情况并不重要,但是特别是我是用.png文件制作QIcon对象(属于Qt库的一部分)。为此的构造方法采用的字符串应为文件路径

我发现,我可以使用":/Icons/controller.png"之类的东西简单地代替构造路径,而仍然可以正确检索和显示图标。

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

1 个答案:

答案 0 :(得分:0)

:/路径是Qt Resource System中的路径。

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

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

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

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

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

加载它们