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 : 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
        }
    }
}
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