buntu SDKドキュメントのダイアログコンポーネントの例 を見ると、ダイアログは、タイトルとテキストが固定された静的コンポーネントとして定義されているように見えます。または、少なくともダイアログを表示する前にそれを変更する方法がわかりません。
また、Dialogの基になっているPopupBaseクラスの show()メソッド についてもヒントをもらいましたが、目的に合わせてそれらを使用する方法を考え出していません。
コード内にダイアログを開き、タイトルとテキストを動的に設定したいシグナルハンドラがあります。
onSomethingHappened: {
/* Open a dialog and set the title and text properties */
}
どうやってやるの?
コードで次のスニペットを使用してこれを実行できることがわかりました(root
はopen()
メソッドの呼び出し元IDですが、この例では無視できます)。基本的に、 PopUtils.open() 関数でparams
引数を設定します:
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)
}
}
ダイアログテキストは直接変更されないため、これはあなたの質問に対する答えではありませんが、ダイアログテキスト自体が動的に変更されるため、問題への答えかもしれません:-)
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)
}
}