我有一个 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
,我很乐意使用它。
的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 类型的开头。