【问题标题】:QML QtQuick `control` property of corresponding Style object is sometimes null相应 Style 对象的 QML QtQuick `control` 属性有时为空
【发布时间】:2016-08-10 20:05:14
【问题描述】:

我有一些使用 Qt 5.6.1 中的QtQuick.Controls 1.4 的 QML 代码。我有一些围绕各种控件的包装器,例如ComboBox;这些使用Style 对象。例如,MyComboBox 是带有自定义 ComboBoxStyleComboBox

每隔一段时间,当某些组件被加载时,Style 对象中的control 属性是null

MyComboBox.qml:

...
style: ComboBoxStyle {
    ...
    label: Label {
        text: control.currentText
...

产生的错误输出是:

qrc:/MyComboBox.qml:72: TypeError: Cannot read property 'currentText' of null

重新启动应用程序通常会修复错误。

我不知道这是怎么发生的,也不知道为什么错误看起来是不确定的。我可以做些什么来调查?

【问题讨论】:

  • 闻起来像 5.6.1-1 版本修复的问题:blog.qt.io/blog/2016/06/22/qt-5-6-1-1-released
  • @jpnurmi 嗯——我的应用程序没有崩溃,但这看起来肯定是相关的,而且无论如何这听起来像是一个非常丑陋的潜在错误如果我真的遇到它,我会和它一起工作。我会尝试发布错误修复版本,看看是否能解决我的问题。这种对 5.6 的“长期支持”结果……令人失望。
  • 我认为 Tuukka 的描述有点误导。该错误导致更大的 QML 应用程序爆炸,以至于这种cannot read property 'foo' of null 错误突然无处不在。如果我没记错的话,那个特定的纸袋虫子并没有导致真正的崩溃。为什么会让人失望?当意识到问题的严重性时,立即发布了修补程序。
  • @jpnurmi 好吧,假设 5.6.1-1 中还没有严重的错误,这是自 5.6 最初发布以来的整个前 6 个月中该 LTS 系列的第一个此类版本发布,并且它在该时间范围内是第三个发布,这意味着,对于受监管行业的公司(如我的)开发的嵌入式设备多年不更新且使用寿命长,该系列似乎很危险不稳定。此外,我反复检查了 Qt 5.6 版本页面,看看是否有新版本修复了 5.6.1 的已知问题,但那里没有列出 5.6.1-1。
  • 请注意,6 个月是承诺的 LTS 支持期限(三年)的 1/6。

标签: qt qml qtquickcontrols


【解决方案1】:

这似乎已在release 5.6.1-1 中修复;自升级以来,我们没有观察到此错误。大概我们只是观察到QTBUG-53761 的不太严重的症状之一。

感谢 jpnurmi 认识到我描述的症状与错误行为的相似性,并通知我有一个带有修复的版本可用(遗憾的是,这在 Qt 5.6 版本系列页面上并不明显)。

【讨论】:

    猜你喜欢
    • 2021-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    • 1970-01-01
    相关资源
    最近更新 更多