栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

QML 常见错误qml:123: TypeError: Cannot read property ‘xxx‘ of null

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

QML 常见错误qml:123: TypeError: Cannot read property ‘xxx‘ of null

简述
qml:123: TypeError: Cannot read property 'xxx' of null

这种错误比较常见,一直不得其解。经过一番折腾之后原因总结如下。

  • 对象未创建或者属性未创建,类似空指针null。
  • 程序运行中正常,退出时报错,一般是对象被提前释放。
运行中正常,退出时报错

我的用法如下,创建C++示例,然后注入QML引擎上下文中使用,运行中没有错误。但是退出程序的时候有错误打印TypeError:xxx。

int main(){
...
QQmlApplicationEngine engine;
...
Util util;
engine.rootContext()->setContextProperty("util", &util);
...
}

原因是因为engine比util的声明周期更长,退出程序时util释放的要比engine更早。因此QML引擎收到绑定错误。
有两种方式解决
方法1 堆上创建

QQmlApplicationEngine engine;
Util *util = new Util (&engine);
engine.rootContext()->setContextProperty("util", util);

方法2 早于引擎创建

Util util;
QQmlApplicationEngine engine;
engine.rootContext()->setContextProperty("util", &util);
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/950149.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号