[InputText] Signal textChanged
Bonjour,
Je débute en Qt/QML ( 5.7 ) et je cherche à faire un composant de saisie login/password un peu comme on peut trouver sur une appli de type skype sur mobile.
C'est à dire qu'il y a un texte à l'intérieur grisé qui correspond au label ( ex : Entrez votre login ) , et lorsque le TextInput a le focus et qu'on tape le login , ce label disparait, il revient si on efface le tout. Ca serait simple à faire si le TextInput émettait un signal textChanged, mais il n'y a pas l'air d'avoir ca, ni dans les "classes" mères.
J'aurai aimé savoir quelle est la bonne solution pour faire cela, faudrait-il que je passe par Qt C++ pour créer un composant spécifique avec le signal voulu ( ca me parait un peu lourd ) ou y-a-t-il une solution plus simple ?
Voici le code QML de mon composant:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
import QtQuick 2.7
Rectangle
{
id: inputRect
color: "white"
border.color : "darkgray"
border.width : 1.2
radius:1
property string mytext
property int myechoMode
property int decalage
height : 30
width : parent.width - decalage
x : decalage / 2
TextInput {
id: textInput
width: parent.width - 6
x : 3
color: "#000000"
anchors.verticalCenter: parent.verticalCenter
anchors.horizontalCenter: parent.horizontalCenter
font.pixelSize: 12
echoMode : inputRect.myechoMode
}
Text{
id : textlabel
width: parent.width - 6
anchors.verticalCenter: parent.verticalCenter
anchors.horizontalCenter: parent.horizontalCenter
x : 3
color: "#808080"
text: inputRect.mytext
}
MouseArea {
anchors.fill: parent
onClicked: {
textInput.focus = true
}
}
} |
Je voudrais en gros que mon labeltext affiche rien si inputtext n'est pas vide, et affiche inputrect.mytext si inputtext est vide.
Merci d'avance pour votre aide :)