Como criar um diálogo e definir o título e o texto dinamicamente

5

Olhando para o exemplo do componente Dialog no Ubuntu Documentação do SDK , parece que os diálogos se destinam a ser definidos como componentes estáticos com título e texto fixos. Ou, pelo menos, não consigo descobrir como alterá-lo antes de mostrar o diálogo.

Também fui sugerido no método show () da classe PopupBase na qual o Dialog é baseado, mas não resolvi como usá-los para meus propósitos.

Eu tenho um manipulador de sinal no meu código onde gostaria de abrir uma caixa de diálogo e definir dinamicamente o título e o texto.

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

Como posso fazer isso?

    
por David Planella 09.06.2013 / 10:36

2 respostas

4

Descobri que posso fazer isso com o seguinte snippet no meu código ( root é o identificador de chamadas do método open() , mas pode ser ignorado para este exemplo). Essencialmente, preenchendo o argumento params no PopUtils.open () function:

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

E o arquivo QrCodeDialog.qml contém:

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)
    }
}
    
por David Planella 10.06.2013 / 18:38
4

Esta não é uma resposta à sua pergunta, pois o texto da caixa de diálogo não é alterado diretamente, mas pode ser uma resposta para o seu problema, já que o texto da caixa de diálogo é alterado dinamicamente: -)

Supondo que você tenha algum item que acione o onSomethingHappened , você pode conectar as propriedades do diálogo às propriedades do item.

Exemplo:

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)
  }
}
    
por xubuntix 09.06.2013 / 16:21