web-dev-qa-db-ja.com

ダイアログを作成し、タイトルとテキストを動的に設定する方法

buntu SDKドキュメントのダイアログコンポーネントの例 を見ると、ダイアログは、タイトルとテキストが固定された静的コンポーネントとして定義されているように見えます。または、少なくともダイアログを表示する前にそれを変更する方法がわかりません。

また、Dialogの基になっているPopupBaseクラスの show()メソッド についてもヒントをもらいましたが、目的に合わせてそれらを使用する方法を考え出していません。

コード内にダイアログを開き、タイトルとテキストを動的に設定したいシグナルハンドラがあります。

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

どうやってやるの?

5
David Planella

コードで次のスニペットを使用してこれを実行できることがわかりました(rootopen()メソッドの呼び出し元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)
    }
}
4
David Planella

ダイアログテキストは直接変更されないため、これはあなたの質問に対する答えではありませんが、ダイアログテキスト自体が動的に変更されるため、問題への答えかもしれません:-)

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)
  }
}
4
xubuntix