c++ - 无法加载 QML 插件:无法保护模块,因为它从未注册过
问题描述
我无法从 C++ 加载 qml 文件:
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 组件位于 qrc 中并已编译。我没有在插件本身中注册任何类型。这适用于 Qt 5.14.1,但不适用于 Qt 5.15.0
解决方案
原因是我没有注册任何类型,在这种情况下你需要调用qmlRegisterModule
:
void MyModulePlugin::registerTypes(const char *uri)
{
Q_ASSERT(uri == QLatin1String("My.Module"));
qmlRegisterModule(uri, 1, 0);
}
推荐阅读
- python - 如何检查字符是否在二维数组中,然后打印相应的值
- wordpress - 带有多行参数的 WordPress 简码
- javascript - Angular - 将错误类型定义为 HttpClient.post()
- flutter - 如何在颤振中验证单个表单字段
- ibm-cloud - 缺少 IBM API Connect 开发人员门户管理员链接
- c# - 如何从 powershell 捕获错误并将它们写入 .txt 文件?
- javascript - 散景服务器:回调执行顺序
- jquery - 我的 Jquery 脚本不工作。单击(在移动设备上)时,栏(图标)不显示导航栏内容
- vuex - FormData 作为 vuex 操作的有效负载
- string - 如何使用地图中的键分配每个项目