Как создать диалог и установить заголовок и текст динамически

Рассматривая пример компонента диалога в документации по Ubuntu SDK , выглядит, как будто диалоги предназначены для определения в качестве статических компонентов с фиксированным заголовком и текстом. Или, по крайней мере, я не могу понять, как это изменить, прежде чем показывать диалог.

Мне также намекали на метод show () класса PopupBase , на котором основан Dialog, но я не понял, как использовать их для своих целей.

В моем коде есть обработчик сигнала, в котором я хотел бы открыть диалоговое окно и динамически установить заголовок и текст.

onSomethingHappened: {
   /* Open a dialog and set the title and text properties */
}

Как я могу это сделать?

5
задан 9 June 2013 в 14:36

2 ответа

Это не ответ на ваш вопрос, поскольку текст диалога не изменяется напрямую, но это может быть ответом на вашу проблему, поскольку текст диалога изменяется сам по себе: -)

Предполагая, что у вас есть некоторый элемент, который вызывает onSomethingHappened, вы можете связать свойства диалогового окна со свойствами элемента.

Пример:

Item {
  Component {
     id: dialog
     Dialog {
        id: dialogue
        title: someID.dialogTitle
        text: someID.dialogText
        Button {
            text: "cancel"
            onClicked: PopupUtils.close(dialogue)
        }
     }
  }
}

SomeItem {
  id: someID
  property string dialogTitle
  property string dialogText
  onSomethingHappened: {
     dialogTitle = "Hello David"
     dialogText = "Whats up?"
     PopupUtils.open(dialog)
  }
}
0
ответ дан 9 June 2013 в 14:36

Я обнаружил, что могу сделать это с помощью следующего фрагмента кода (root - это идентификатор вызывающего абонента для метода open(), но в этом примере его можно игнорировать). По сути, заполнение аргумента params в функции PopUtils.open () :

PopupUtils.open(Qt.resolvedUrl("QrCodeDialog.qml"), root, {
                    title: i18n.tr("This is the title"),
                    text: i18n.tr("This is the text")
                })

И затем файл QrCodeDialog.qml содержит:

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

Dialog {
    id: qrcodedialog
    title: ""
    text: ""

    Button {
        text: i18n.tr("Close")
        onClicked: PopupUtils.close(qrcodedialog)
    }
}
0
ответ дан 9 June 2013 в 14:36

Другие вопросы по тегам:

Похожие вопросы: