0

我有一个类型的属性Component

import QtQuick 2.6

Item {
    id: root
    property Component sourceComponent
    /* ........ */
    Loader {
        anchors.fill: parent
        id: myLoader
    }
    SequentialAnimation {
        id: hideLoader
        NumberAnimation {
            target: root
            property: "y"
            duration: 1000; from: 0; to: -root.height
        }
        onStopped: root.sourceComponent = undefined;  //<-- Error: Cannot assign [undefined] to QQmlComponent*
    }
}

每当我想将其设置为它时undefined,都会引发错误。我该如何设置它undefined
更新
正如您在我的示例代码中看到的,我想sourceComponentloader完成动画后分配。所以我需要财产不正常alias

4

2 回答 2

1

装载机文档说:

如果sourcesourceComponent更改,则任何先前实例化的项目都将被销毁。设置source为空字符串或设置sourceComponentundefined销毁当前加载的对象,释放资源并使 Loader 为空。

因此,您可以简单地将其source属性设置为空字符串。

在您的情况下,您需要一个名为 的别名属性sourceComponent,而不是普通属性。

property alias sourceComponent: myLoader.sourceComponent 
于 2017-07-24T11:10:15.140 回答
0

您可以使用动态对象创建来实现此目的。

属性组件源组件

与其定义sourceComponentComponent,不如将其定义为var。例子 :

property var sourceComponent = Qt.createComponent("YourCustomImplementation.qml");

将此 sourceComponent 分配给您的 Loader sourceComponent。

myLoader.sourceComponent = root.sourceComponent
于 2017-07-25T08:38:42.020 回答