原创不易,转载请注明出处,谢谢。
cpp通过Q_INVOKABLE函数返回自定义类型对象到qml,可能会将对象的生命周期给qml管理,这可能会造成难以定位的问题,一般都表现在访问对象的成员变量的时候,由于对象已经被qml销毁,造成段错误。解决方法有两个:
1.目前发现用Q_PROPERTY将对象成员变量写成属性了,就不会被销毁了。
2.调用函数指定用cpp管理该对象的生命周期:
QQmlEngine::setObjectOwnership(obj, QQmlEngine::CppOwnership);