qt - Component.onCompleted 提示 "Non-existent attached object"

标签 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
  • 为什么会出现此错误?
  • 如何才能在我的组件上运行“设置”代码?

以防万一,我的真实组件看起来更像这样:

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/

相关文章:

c++ - QQuickWidget 中的组件与 QQuickView 中的组件行为不同

c++ - 如何平滑自定义 QML 元素的绘制?

c++ - 如何在 Blackberry 10 Cascades 的 qml、C++ qt 中响应单击 ListView 中的列表项

javascript - 如何在 QML 中使用forwardTo 在 TextInput 上显示光标

python - PySide2 加载和创建组件时发生了什么?

qt - 将 QGeoCoordinate 从 c++ 传递到 qml

c++ - Qt OpenGL - 用鼠标拖动旋转

c++ - QT Creator 出错

c++ - 如何覆盖 qHash() 函数?

regex - Qt4.8:如何使 QLineEdit 始终以大写显示文本并且仍然具有 RegExp