Come creare una finestra di dialogo e impostare titolo e testo in modo dinamico

Guardando l’ esempio del componente Dialog nella documentazione di Ubuntu SDK , sembra che le windows di dialogo debbano essere definite come componenti statici con titolo e testo fissi. O almeno non riesco a capire come cambiarlo prima di mostrare la finestra di dialogo.

Sono stato anche accennato al metodo show () della class PopupBase su cui è basato Dialog, ma non ho ancora capito come usarli per i miei scopi.

Ho un gestore di segnale nel mio codice in cui mi piacerebbe aprire una finestra di dialogo e impostare dynamicmente il titolo e il testo.

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

Come lo posso fare?

Questa non è una risposta alla tua domanda dato che il testo del dialogo non viene modificato direttamente, ma potrebbe essere una risposta al tuo problema, poiché il testo del dialogo si modifica dynamicmente 🙂

Supponendo di avere qualche elemento che triggers onSomethingHappened , è ansible connettere le proprietà della finestra di dialogo alle proprietà dell’elemento.

Esempio:

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

Ho trovato che posso farlo con il seguente frammento nel mio codice ( root è l’id del chiamante per il metodo open() , ma può essere ignorato per questo esempio). Essenzialmente, popolando l’argomento params nella funzione PopUtils.open () :

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

E quindi il file QrCodeDialog.qml contiene:

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