9
votes

I'm trying to use the QML-material library in a Qt Quick Application.

But when I try to use the import code it says

module "Material" is not installed`

import Material 0.1

I did also try this but that seems not to work:

import "modules/Material" as Material

qml.qrc looks like this, all qmldir files are listed:

<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();
}

Is there something I'm missing or is it not possible to use qmldir in qrc file?

1
Have you tried engine.addImportPath("qrc:/modules/"); ?GrecKo
@GrecKo Yes, but then I get qrc:///modules/Material/[Name of component].qml:-1 File not found, forgot to mention that.Joery
I think you need to add every folder and files to the qrc, not just the qmldirsGrecKo
@GrecKo that works, thank you.Joery
@GrecKo please provide an answer for the question.BaCaRoZzo

1 Answers

15
votes

You need to add to the import path the folder where the modules are located.

In this case it's qrc:/modules/.

Example:

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

For a module to work you need to have access to the qmldir file, but also all the files referenced in it. So you need to add all the files of the library to the the qrc.