Заредете qmldir от QRC файл

Опитвам се да използвам библиотеката с QML материали в приложение Qt Quick.

Но когато се опитам да използвам кода за импортиране, той казва

модул "Материал" не е инсталиран`

import Material 0.1

Опитах и ​​това, но изглежда не работи:

import "modules/Material" as Material

qml.qrc изглежда така, всички qmldir файлове са изброени:

<RCC>
    <qresource prefix="/">
        <file>main.qml</file>
        <file>modules/Material/qmldir</file>
        <file>modules/Material/Extras/qmldir</file>
        <file>modules/Material/ListItems/qmldir</file>
        <file>modules/QtQuick/Controls/Styles/Material/qmldir</file>
    </qresource>
</RCC>

main.cpp

#include <QGuiApplication>
#include <QQmlApplicationEngine>

int main(int argc, char *argv[])
{
    QGuiApplication app(argc, argv);

    QQmlApplicationEngine engine;
    engine.addImportPath("qrc:/");
    engine.load(QUrl(QStringLiteral("qrc:/main.qml")));

    return app.exec();
}

Има ли нещо, което пропускам или не е възможно да използвам qmldir във файл qrc?


person Joery    schedule 30.07.2015    source източник
comment
Опитвали ли сте engine.addImportPath("qrc:/modules/");?   -  person GrecKo    schedule 30.07.2015
comment
@GrecKo Да, но тогава получавам qrc:///modules/Material/[Name of component].qml:-1 File not found, забравих да го спомена.   -  person Joery    schedule 30.07.2015
comment
Мисля, че трябва да добавите всяка папка и файлове към qrc, а не само qmldirs   -  person GrecKo    schedule 30.07.2015
comment
@GrecKo, това работи, благодаря.   -  person Joery    schedule 30.07.2015
comment
Някой иска ли да отговори?   -  person Mitch    schedule 30.07.2015
comment
@GrecKo, моля, дайте отговор на въпроса.   -  person BaCaRoZzo    schedule 30.07.2015


Отговори (1)


Трябва да добавите към пътя за импортиране папката, където се намират модулите.

В този случай това е qrc:/modules/.

Пример:

engine.addImportPath( "qrc:///modules" );

За да работи един модул, трябва да имате достъп до файла qmldir, но също и до всички файлове, посочени в него. Така че трябва да добавите всички файлове от библиотеката към qrc.

person GrecKo    schedule 30.07.2015
comment
За немодифициран qml-material, инсталиран като git подмодул с файла .pri, ще трябва просто да добавите: engine.addImportPath( "qrc:///" );. - person Itay Grudev; 20.05.2016