En regardant exemple de composant Dialog dans la documentation du kit de développement Ubunt , il semble que les dialogues doivent être définis en tant que composants statiques avec un titre et un texte fixes. Ou du moins je ne peux pas comprendre comment le changer avant d'afficher le dialogue.
On m'a également fait allusion à la méthode show () de la classe PopupBase sur laquelle Dialog est basé, mais je n'ai pas trouvé comment les utiliser à mes fins.
J'ai dans mon code un gestionnaire de signaux dans lequel j'aimerais ouvrir une boîte de dialogue et définir de manière dynamique le titre et le texte.
onSomethingHappened: {
/* Open a dialog and set the title and text properties */
}
Comment puis je faire ça?
J'ai découvert que je pouvais le faire avec l'extrait suivant dans mon code (root
est l'identifiant de l'appelant pour la méthode open()
, mais peut être ignoré pour cet exemple). Essentiellement, peupler l'argument params
dans la fonction PopUtils.open () :
PopupUtils.open(Qt.resolvedUrl("QrCodeDialog.qml"), root, {
title: i18n.tr("This is the title"),
text: i18n.tr("This is the text")
})
Et puis le fichier QrCodeDialog.qml
contient:
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)
}
}
Ce n'est pas une réponse à votre question car le texte de la boîte de dialogue n'est pas directement modifié, mais il peut s'agir d'une réponse à votre problème, car le texte de la boîte de dialogue se modifie de manière dynamique :-)
En supposant que vous ayez un élément qui déclenche la onSomethingHappened
, vous pouvez connecter les propriétés de la boîte de dialogue aux propriétés de l'élément.
Exemple:
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)
}
}