【问题标题】:Component.onCompleted complains about "Non-existent attached object"Component.onCompleted 抱怨“不存在的附加对象”
【发布时间】:2016-11-11 07:22:10
【问题描述】:

我有一个 QML 文件Foo.qml

import NDDView 1.0

NDDView {
    source: "nddcontent/Foo.uip"
    Component.onCompleted: console.log("Yay!")
}

NDDView 组件继承自 QQuickFramebufferObject。当我在我的项目中编译和使用这个组件时,我得到了错误:

qrc:/Foo.qml:5 Non-existent attached object
  • 为什么会出现此错误?
  • 如何改为在我的组件上运行“设置”代码?

如果重要的话,我的真实组件看起来更像这样:

NDDView {
    property var    paths: ([])
    property int    items: 20
    property string prefix: "foo"
    Component.onCompleted: {
      for (var i=items;i--;) paths.push(prefix+i);
    }
}

我正在尝试在实例化组件时以程序方式填充数组。如果在没有Component.onCompleted 的情况下有更好/替代的方法来执行此任务,我很乐意改用它。

【问题讨论】:

  • 导入QtQmlQtQuick 以使Component 类型可用。
  • @jpnurmi 做到了,谢谢!请张贴作为答案,以便我给你信用和代表。

标签: qt qml


【解决方案1】:

Component QML Type 类型由QtQml 模块注册,出于向后兼容性和方便的原因,也由QtQuick 模块注册。为了使该类型可用,您必须导入这些模块中的任何一个。因此,在使用 Qt 5 编写 QML 应用程序时,大多数 .qml 文件以以下任一开头:

import QtQuick 2.0 // or later

import QtQml 2.0 // or later

最新的可用版本取决于您使用的 Qt 版本,以及您想要支持的 Qt 版本。如果您使用最新版本中引入的属性或方法,则必须导入最新版本,该版本记录在每个 QML 类型的开头。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-01
    • 2012-11-06
    • 1970-01-01
    相关资源
    最近更新 更多