我有一个 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
有更好/替代的方法来执行此任务,我很乐意改用它。
最佳答案
Component QML Type
类型由 QtQml
注册模块,并且出于向后兼容性和方便的原因,也由 QtQuick
模块。为了使类型可用,您必须导入这些模块中的任何一个。因此,在使用 Qt 5 编写 QML 应用程序时,大多数 .qml
文件以以下之一开头:
import QtQuick 2.0 // or later
或
import QtQml 2.0 // or later
最新的可用版本取决于您使用的 Qt 版本,以及您希望支持的旧 Qt 版本。如果您使用最新版本中引入的属性或方法,则必须导入最新版本(记录在每个 QML 类型的开头)。
关于qt - Component.onCompleted 提示 "Non-existent attached object",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38271475/