QML +.разводка: сохранение изображения под другим префиксом



Моя проблема была аналогична той, что обсуждалась в другом обсуждении stackoverflow, и я мог бы заставить мой код работать таким образом. Однако я не вполне удовлетворен этим решением. Изначально у меня был свой .qml-файл под одним префиксом ("/") и мои изображения под другим ("/images"). Не отказываясь от этого разделения, я не запускаю программу.



Существует ли какой-либо (простой) способ использовать различные префиксы в проекте QML .файл ресурсов разводка?

642   4  

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

    Ничего не найдено.