Почему предоставление ": /Icons/controller.png" конструктору работает (это допустимый относительный синтаксис filepath)? - PullRequest
0 голосов
/ 10 июля 2019

Детали ситуации не имеют значения, но, в частности, я делаю объект QIcon (часть библиотеки Qt) из файла .png.Для этого конструктор принимает строку, которая должна иметь путь к файлу

. Я обнаружил, что вместо использования абсолютного пути я могу просто дать конструктору что-то вроде ":/Icons/controller.png", а значок по-прежнему корректно извлекается и отображается.

Мой проект огромен, поэтому я не буду выписывать иерархию и расположение файла относительно всего остального, но они как минимум с 3 степенями разделения.Из-за этого я думаю, что есть какая-то механика поиска файлов, о которой я не знаю.Кто-нибудь может догадаться, что здесь происходит?

1 Ответ

0 голосов
/ 10 июля 2019

:/ пути - это пути в 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");

...