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

Phr*_*ogz 1 qt qml

我有一个 QML 文件Foo.qml

import NDDView 1.0

NDDView {
    source: "nddcontent/Foo.uip"
    Component.onCompleted: console.log("Yay!")
}
Run Code Online (Sandbox Code Playgroud)

NDDView组件继承自QQuickFramebufferObject. 当我在项目中编译并使用此组件时,出现错误:

import NDDView 1.0

NDDView {
    source: "nddcontent/Foo.uip"
    Component.onCompleted: console.log("Yay!")
}
Run Code Online (Sandbox Code Playgroud)
  • 为什么我收到这个错误?
  • 我怎样才能在我的组件上运行“设置”代码?

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

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

我试图在实例化组件时按程序填充数组。如果有更好的/替代的方法来执行此任务Component.onCompleted,我很乐意使用它。

jpn*_*rmi 7

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

import QtQuick 2.0 // or later
Run Code Online (Sandbox Code Playgroud)

或者

import QtQml 2.0 // or later
Run Code Online (Sandbox Code Playgroud)

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