Как импортировать синглтон QML - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь импортировать мой одноэлементный модуль, но продолжаю получать модуль "Стиль" не установлен

Это структура моего проекта

enter image description here

Style.qml

pragma Singleton
import QtQuick 2.0

QtObject {

    property color subsectionlabelColor: "white"
    property color appSectionTitleColor: "white"
}

qmldir

singleton Style 1.0 Style.qml

Main.qml

import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 2.3

import Style 1.0

Window {

Я хотел сохранить стиль.qml вне qrc-файла, чтобы его можно было легко изменить.

Может кто-нибудь объяснить, что происходит?

Спасибо

Ответы [ 2 ]

0 голосов
/ 12 марта 2019

Обычно это должно работать, если вы импортируете каталог, в котором расположен ваш синглтон .

В вашем Main.qml замените import Style 1.0 на import "Style" (или как вам кажетсябыть вашим относительным путем от Main.qml к каталогу, содержащему Style.qml. При импорте каталога должен запускаться сценарий qmldir, который позволяет синглтону активироваться.

import QtQuick 2.9
import QtQuick.Window 2.2
import QtQuick.Controls 2.3

import "Style"  // relative path to the directory containing Style.qml

Window {
0 голосов
/ 12 марта 2019

Используйте API-интерфейс addImportPath для добавления пути к каталогу, в котором находится ваш файл qtdir.Обратитесь к файлу main.cpp примера https://doc.qt.io/qt-5/qtquickcontrols-flatstyle-example.html

Вышеупомянутый API можно использовать в вашей основной функции как:

int main(int argc, char *argv[])

{

QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
QApplication app(argc, argv);

QQmlApplicationEngine engine;
engine.addImportPath(":/imports"); /* Insert relative path to your import directory here */
engine.load(QUrl(QStringLiteral("qrc:/Main.qml")));

return app.exec();
}

Для решения проблемы необходимо добавить пути импортаошибка "модуль не установлен".По умолчанию пути импорта будут такими же, как в исходном каталоге QT

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...