QML: псевдонимы для дочерних свойств

Я создал диалог и попытался добавить псевдонимы, чтобы изменить его заголовок и текст:

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"

Итак, как создать эти псевдонимы? Почему Item его не видит? Каков наилучший способ изменить это свойство?

С уважением, Ник


person Robotex    schedule 11.04.2013    source источник


Ответы (2)


Это из-за элемента Component QML. Просто сделайте Dialog элементом верхнего уровня в файле .qml и рассматривайте это как компонент для динамического создания экземпляров.

person Jan Kundrát    schedule 11.04.2013

Объект Dialog не будет доступен до тех пор, пока вы не создадите его экземпляр, поскольку он находится внутри компонента.

Вы можете указать его идентификатор, если его нет в компоненте.

person Mahesh    schedule 26.07.2013