c++ - 为什么将“:/Icons/controller.png”给构造函数工作(这是有效的相对文件路径语法)?
问题描述
情况的细节并不重要,但特别是我正在用 .png 文件制作一个 QIcon 对象(Qt 库的一部分)。这个的构造函数需要一个应该是文件路径的字符串
我发现,我可以简单地给":/Icons/controller.png"
构造函数提供类似的东西,而不是使用绝对路径,并且仍然可以正确检索和显示图标。
我的项目很大,所以我不会写出层次结构以及文件相对于其他所有内容的位置,但它们至少相隔 3 度。因此,我认为有某种我不知道的文件搜索机制。谁能猜出这里发生了什么?
解决方案
:/
路径是Qt 资源系统中的路径。
您有一个 QRC 文件,该文件已编译并与您的可执行文件捆绑在一起。它引用图像。
例如,您的 qrc 文件包含以下内容:
<RCC version="1.0">
<qresource>
<file>Icons/controller.png</file>
</qresource>
</RCC>
然后在您的构建过程中使用 RCC 编译器对其进行编译。该文件然后与您的 exe 链接。
默认资源会自动注册,但您也可以将资源编译到外部 RCC 包中,并在运行时使用QResource::registerResource("/path/to/myresource.rcc");
推荐阅读
- go - goroutine channel & WaitGroup 致命错误:所有 goroutines 都处于睡眠状态 - 死锁
- html - 到 MediaWiki 标记的 HTML 富格式
- c++ - C++ 中的自己的 Profiler 弄乱了函数的浮点返回值
- python - 如何使用 for 循环在我的模式之前和之后提取特定长度的字符串
- javascript - 如何在 nx 中使用/构建 oclif(CLI 节点应用程序)?
- ruby-on-rails-5 - Lazyload 不适用于 Turbolinks 页面刷新(但适用于正常页面刷新)
- ruby-on-rails - 如何删除rails中的会话?
- android - 如何使用 asyncTask 将以 base64 格式选择的多个图像发送到服务器?
- vb.net - ADODB.connection 上的最大同时连接?
- c# - 如何将 C# 对象保持在范围内,以便可以在整个程序中访问和更改值?