Вы должны убедиться, что QEngine
может найти файл qmldir
, и что у него есть определенные c требования к тому, где он будет искать.
Сначала, чтобы QEngine
узнал о qmldir
файл, вы должны добавить путь импорта:
engine.addImportPath("qrc:/");
Ваш путь может отличаться, читайте дальше:
Файл qmldir
должен быть помещен в структуру папок, определяемую модулем название. В вашем случае это <rootPath>/App/Drawer/qmldir
. «RootPath» мне неизвестен, но предположим, что в вашем qr c файле есть следующее:
<RCC>
<qresource prefix="/ProjectX/App/Drawer">
<file>Drawer.qml</file>
<file>qmldir</file>
</qresource>
</RCC>
Тогда «rootPath» будет qrc:/ProjectX
, а вызов импорта станет:
engine.addImportPath("qrc:/ProjectX");
Кроме того, объявление module
в qmldir
должно совпадать со структурой папок, в которой размещен файл qmldir
. (И я думаю, что он должен быть в нижнем регистре)
module App.Drawer
singleton Drawer 1.0 Drawer.qml
Если вы хотите, чтобы Qt Creator также нашел материал, вы можете использовать переменную среды QML2_IMPORT_PATH
и установить ее в правильную папку, используя ту же самую логи c.
Вы также можете поместить файлы в <Qt_installation_folder>/qml/App/Drawer
, но это означает, что каждый проект может использовать его, и вы должны поддерживать его в актуальном состоянии во время разработки, что может быть чрезмерным.
Редактировать
Чтобы увидеть, правильно ли выровнены ваши файлы, вы можете добавить этот отладочный код:
QDirIterator it(":", QDirIterator::Subdirectories);
while (it.hasNext()) {
qDebug() << it.next();
}