QML +.разводка: сохранение изображения под другим префиксом
Моя проблема была аналогична той, что обсуждалась в другом обсуждении stackoverflow, и я мог бы заставить мой код работать таким образом. Однако я не вполне удовлетворен этим решением. Изначально у меня был свой .qml-файл под одним префиксом ("/") и мои изображения под другим ("/images"). Не отказываясь от этого разделения, я не запускаю программу.
Существует ли какой-либо (простой) способ использовать различные префиксы в проекте QML .файл ресурсов разводка?
4 ответов:
Если вы хотите сгруппировать файлы по префиксу на основе фактического имени папки, не удлиняя имя ссылки, то почему бы не использовать ключевое слово
alias?<RCC> <qresource prefix="/"> <file>main.qml</file> </qresource> <qresource prefix="/images"> <file alias="foo.png">images/foo.png</file> </qresource> </RCC>Это устранит дополнительную косвенность, которая вызывала путаницу, т. е. вы можете получить к ней доступ с помощью
:/images/foo.pngвместо:/images/images/foo.pngОбъяснение и дальнейшие примеры доступны в Qt docs (поиск "псевдонима"): http://doc.qt.io/qt-5/resources.html
Вместо того чтобы спрашивать, я должен был пойти выпить кофе или заняться спортом. Это смущающая проблема новичка. Но ведь могут быть и другие, такие же, как я...
Мое приложение QtQuick состояло в основном из исходного файла C++ main.cpp , файл ресурсов qml.qrc и изображение foo.png .
Исходный файл (показанный код генерируется автоматически QtCreator):
//main.cpp #include <QGuiApplication> #include <QQmlApplicationEngine> int main(int argc, char *argv[]) { QGuiApplication app(argc, argv); QQmlApplicationEngine engine; engine.load(QUrl(QStringLiteral("qrc:///main.qml"))); return app.exec(); }Файл ресурсов с дополнительным префиксом для изображений:
//qml.qrc <RCC> <qresource prefix="/"> <file>main.qml</file> </qresource> <qresource prefix="/images"> <file>images/foo.png</file> </qresource> </RCC>Файл qml, где я хочу импортировать изображение:
//main.qml import QtQuick 2.2 import QtQuick.Window 2.0 Window { visible: true Image { source: ??? } }Моя проблема была в том, что я не знал, что писать вместо ??? в г.файл qml. Чтобы импортировать графику, вам нужно написать " / images / images/foo.png " , но мой разум восстал против идеи написания /изображений дважды.
Спасибо.
Вместо ???, необходимо поставить путь " qrc: / images / images/foo.png "
Пример:
//main.qml import QtQuick 2.2 import QtQuick.Window 2.0 Window { visible: true Image { source: "qrc:/images/images/foo.png" } }
В вашем случае вместо того, чтобы писать "изображения" дважды в качестве исходного пути, вы могли бы определить файл в файле ресурсов следующим образом:
<file alias="foo.png">images/foo.png</file>Тогда вы можете использовать "изображения" только один раз.
Window { visible: true Image { source: "qrc:/images/foo.png" }}
Comments