Component.onCompleted抱怨"不存在的附加对象"

时间:2016-07-08 16:26:26

标签: qt qml

我有一个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
  • 为什么我收到此错误?
  • 我怎样才能运行' setup'我的组件上的代码?

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

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更好/替代方式执行此任务,我很乐意使用它。

1 个答案:

答案 0 :(得分:4)

Component QML Type模块注册QtQml类型,出于向后兼容性和便利性原因,QtQuick模块也是如此。要使类型可用,您必须导入其中任何一个模块。因此,在使用Qt 5编写QML应用程序时,大多数.qml文件都以:

开头
import QtQuick 2.0 // or later

import QtQml 2.0 // or later

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