Qml 上下文对象在应用程序关闭时为空

Posted

技术标签:

【中文标题】Qml 上下文对象在应用程序关闭时为空【英文标题】:Qml context object is null on app shutdown 【发布时间】:2021-08-10 08:52:10 【问题描述】:

这是我的代码。 每次退出应用程序时,我都会在控制台中收到这些错误。 属性在执行期间工作得很好,但我每次都会收到这个烦人的警告。

qrc:/search.qml:17:TypeError:无法读取 null 的属性“isConnected” qrc:/search.qml:18: TypeError: 无法读取 null 的属性“scanStatus” qrc:/search.qml:19: TypeError: Cannot read property 'device' of null

#main.cpp

Utility u;
view->rootContext()->setContextProperty("utility", &u);
#search.qml

property bool connected : utility.isConnected
property bool scanRunning : utility.scanStatus
property var searchedDevice : utility.device

【问题讨论】:

【参考方案1】:

确保您的 Utility 对象在 QML 引擎之后没有被破坏:如果两者都在堆栈上创建,则在引擎之前创建它。 使用此解决方案无需检查utility 是否为空。

【讨论】:

【参考方案2】:

您必须验证utility 不为空:

property bool connected : utility ? utility.isConnected : false
property bool scanRunning : utility ? utility.scanStatus : false
property var searchedDevice : utility ? utility.device : null

【讨论】:

以上是关于Qml 上下文对象在应用程序关闭时为空的主要内容,如果未能解决你的问题,请参考以下文章

在parallelStream中获取安全上下文时为空主体[重复]

无法使用 QML 远程对象连接错误:“connectionToSource 为空”

flask-sqlalchemy中的日期查询在相等时为空,在ge或le时为非空

forEach 中的推送对象在地图外观结束时为空 [重复]

Request.UrlReferrer 在页面刷新时为空

SynchronizationContext.Current 在不同的应用程序域上运行时为空