QML:子属性的别名

时间:2013-04-11 15:42:35

标签: qt properties alias 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)
    }
}

但我有问题:

qrc:/ConfirmationDialog.qml:8:23: Invalid alias reference. Unable to find id "dialog"

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

祝你好运, 尼克

2 个答案:

答案 0 :(得分:3)

在实例化之前,对话框对象将不可用,因为它在组件内部。

如果它不在组件中,您可以引用它的id。

答案 1 :(得分:0)

这是因为Component QML元素。只需将Dialog作为.qml文件中的顶级项目,然后将 视为动态实例化的组件。