web-dev-qa-db-fra.com

Comment créer une boîte de dialogue et définir le titre et le texte de manière dynamique

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?

5
David Planella

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)
    }
}
4
David Planella

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