QML:子属性的别名

Rob*_*tex 5 qt alias properties qml qt5

我创建了对话框并尝试添加一些别名来更改它的标题和文本:

import QtQuick 2.0
import Ubuntu.Components 0.1
import Ubuntu.Components.Popups 0.1

Item {
    signal confirmed;
    signal canceled;

    property alias title: dialog.title
    property alias text: dialog.text

    signal show(variant caller);

    Component {
         id: dialogComponent

         Dialog {
             id: dialog
             title: "Exit Game"
             text: "Are you sure that you want to exit?"

             Button {
                 text: "cancel"
                 onClicked:
                 {
                     canceled();
                     PopupUtils.close(dialog);
                 }
             }

             Button {
                 text: "confirm"
                 color: "orange"
                 onClicked:
                 {
                     confirmed();
                     PopupUtils.close(dialog);
                 }
             }
         }
    }

    onShow:
    {
        PopupUtils.open(dialogComponent, caller)
    }
}
Run Code Online (Sandbox Code Playgroud)

但我有问题:

qrc:/ConfirmationDialog.qml:8:23: Invalid alias reference. Unable to find id "dialog"
Run Code Online (Sandbox Code Playgroud)

那么,如何创建这个别名呢?为什么项目看不到它?更改此属性的最佳方法是什么?

最好的问候,尼克

Jan*_*rát 1

这是因为ComponentQML 元素。只需将其作为文件Dialog中的顶级项目.qml并将视为动态实例化的组件即可。