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:
Je voudrais en gros que mon labeltext affiche rien si inputtext n'est pas vide, et affiche inputrect.mytext si inputtext est vide.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 } } }
Merci d'avance pour votre aide
Partager