В чем преимущество префикса над путем к файловой системе в системе ресурсов Qt?

Файл ресурсов 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,

Есть ли какое-то преимущество в использовании префикса + псевдоним по пути к файловой системе?

0

Решение

Это просто способ отделить идентификаторы ресурсов от реальных объектов файловой системы. После того как вы определили префикс и псевдоним для ссылки на ресурс, даже если файл ресурса изменяется (то есть заменяется другим файлом с другим именем и путем), код остается без изменений.

Допустим, у вас есть хранилище изображений, которые используются многими приложениями, вы можете ссылаться на файлы в 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>
3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]