Рассматривая пример компонента диалога в документации по Ubuntu SDK , выглядит, как будто диалоги предназначены для определения в качестве статических компонентов с фиксированным заголовком и текстом. Или, по крайней мере, я не могу понять, как это изменить, прежде чем показывать диалог.
Мне также намекали на метод show () класса PopupBase , на котором основан Dialog, но я не понял, как использовать их для своих целей.
В моем коде есть обработчик сигнала, в котором я хотел бы открыть диалоговое окно и динамически установить заголовок и текст.
onSomethingHappened: {
/* Open a dialog and set the title and text properties */
}
Как я могу это сделать?
Это не ответ на ваш вопрос, поскольку текст диалога не изменяется напрямую, но это может быть ответом на вашу проблему, поскольку текст диалога изменяется сам по себе: -)
Предполагая, что у вас есть некоторый элемент, который вызывает 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)
}
}
Я обнаружил, что могу сделать это с помощью следующего фрагмента кода (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)
}
}