Невозможно загрузить плагин QML: невозможно защитить модуль, поскольку он никогда не был зарегистрирован - PullRequest
1 голос
/ 29 мая 2020

Я не могу загрузить файл qml из C ++:

QQmlComponent component(&engine, QUrl("qrc:/qml/Singletons.qml"));

Вверху этого файла мы имеем

import My.Module 1.0

Ошибка (component.errorString()):

plugin cannot be loaded for module "My.Module": Cannot protect module My.Module 1 as it was never registered

My.Module - плагин, содержащий только qml. Он был успешно загружен с использованием QQmlEngine::importPlugin. Компоненты qml находятся в qr c и скомпилированы. Я не регистрирую никаких типов в самом плагине. Это работало для Qt 5.14.1, но не работает для Qt 5.15.0

1 Ответ

1 голос
/ 29 мая 2020

Причина в том, что я не регистрировал никаких типов, в этом случае оказывается нужно позвонить qmlRegisterModule:

void MyModulePlugin::registerTypes(const char *uri)
{
    Q_ASSERT(uri == QLatin1String("My.Module"));
    qmlRegisterModule(uri, 1, 0);
}
...