IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Discussion :

QLineEdit - Masquer le nombre de caractères d'un mot de passe

  1. #1
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut QLineEdit - Masquer le nombre de caractères d'un mot de passe
    Bonsoir à tous

    Je viens vers vous dans l'espoir d'une solution à un problème de saisie de mot de passe. En effet j'aimerais non seulement masquer le mot de passe saisi (ok je mets le setEchoMode sur QLineEdit::Password) mais il reste quand-même le fait que cela affiche autant d'étoiles que de caractères tapés.

    Or moi, j'aimerais bien masquer aussi ce nombre. Soit en remplissant le champ d'étoiles, soit (comme sous certains environnements login sous Linux) remplacer chaque caractère par 3 étoiles (si on tape vite celui qui regarde n'a pas le temps de compter).

    J'ai bien pensé à connecter l'état textChanged() sur un slot qui complèterait le reste avec des étoiles mais je sens qu'il devrait y avoir une solution plus simple (surtout qu'il serait ensuite difficile de faire la distinction entre "ce qu'a entré l'utilisateur" et "ce qui a été artificiellement rempli par le slot)
    Donc si quelqu'un avait cette solution...

    En vous remerciant de m'avoir lu avec la bienveillance habituelle qui transparait dans la grande majorité de ce forum...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  2. #2
    Membre régulier Avatar de Fluch
    Homme Profil pro
    Méthodiste flux
    Inscrit en
    Avril 2012
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Méthodiste flux
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2012
    Messages : 48
    Points : 81
    Points
    81
    Par défaut mot de passe avec trois ***
    Imagine un contrôle [entree] par lequel on mémorise sur l'évènement touche relâchée le keycode mais dans lequel on ne rempli que des "***" à chaque fois.
    A chaque appui de touche, on mémorise le keycode dans un autre contrôle caché [Sortie]
    A l'appui sur return (keycode=13), on test si la valeur du contrôle [sortie] est bien le code attendu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private Sub entree_KeyUp(KeyCode As Integer, Shift As Integer)
        If KeyCode = 8 Then Forms!Formulaire1.entree = Empty: Forms!Formulaire1.[sortie] = Empty: GoTo suite 
        If KeyCode = 13 Then GoTo test
        Forms!Formulaire1.entree = Forms!Formulaire1.entree & "***"
    Forms!Formulaire1.[sortie] = Forms!Formulaire1.[sortie] & " " & KeyCode
     
    GoTo suite
    test:
       ' tester si le contrôle sortie est égal à l attente
    suite:
    End Sub
    Mon soucis est que je ne sais pas ressortir le caractère correspondant au keycode !

    Il va falloir fignoler cette idée ...
    Fluch

  3. #3
    Membre confirmé Avatar de saad.hessane
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 315
    Points : 496
    Points
    496
    Par défaut
    La solution la plus simple que je connaisse, c'est de ne rien afficher.
    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    passwordEdit->setEchoMode(QLineEdit::NoEcho);
    C'est la solution la plus simple founie par Qt. D'ailleurs la documentation de la constante décrit exactement votre situation.
    Citation Envoyé par Doc QLineEdit::NoEcho
    Do not display anything. This may be appropriate for passwords where even the length of the password should be kept secret.
    [EDIT] : Vous pouvez en plus de la solution proposée faire en sorte que la bordure du QLineEdit soit en rouge quand il est vide, et le faire passer au vert lorsqu'un mot de passe y est inséré. Utilisez pour cela le signal textChanged et testez si le texte isEmpty().
    Je trouves personnellement cette solution plus user friendly que de remplir le champ avec des caractères aléatoires. A vous de voir...

  4. #4
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par saad.hessane Voir le message
    La solution la plus simple que je connaisse, c'est de ne rien afficher.
    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    passwordEdit->setEchoMode(QLineEdit::NoEcho);
    C'est la solution la plus simple founie par Qt. D'ailleurs la documentation de la constante décrit exactement votre situation.


    [EDIT] : Vous pouvez en plus de la solution proposée faire en sorte que la bordure du QLineEdit soit en rouge quand il est vide, et le faire passer au vert lorsqu'un mot de passe y est inséré. Utilisez pour cela le signal textChanged et testez si le texte isEmpty().
    Je trouves personnellement cette solution plus user friendly que de remplir le champ avec des caractères aléatoires. A vous de voir...
    Oh oui, ça c'est beau !!! Merci beaucoup.
    Heu juste un petit détail: comment on change la bordure d'un QLineEdit ???

    PS: désolé Flush, j'ai pas super accroché ta solution qui dépasse un peu mes connaissances Qt...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre confirmé Avatar de saad.hessane
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2008
    Messages
    315
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2008
    Messages : 315
    Points : 496
    Points
    496
    Par défaut
    Le plus simple :
    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    //Bordure rouge
    passwordEdit->setStyleSheet("border: 1px solid red");
    //Bordure verte
    passwordEdit->setStyleSheet("border: 1px solid green");

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par saad.hessane Voir le message
    Le plus simple :
    Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    //Bordure rouge
    passwordEdit->setStyleSheet("border: 1px solid red");
    //Bordure verte
    passwordEdit->setStyleSheet("border: 1px solid green");
    Désolé du retard mais c'est super. Merci
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Masquer ce qui est tappé dans le mot de passe
    Par chawki tchou dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 26/02/2011, 16h22
  2. Aide caractère "\" dans mon mot de passe BD Access 2000
    Par 810mcu dans le forum Bases de données
    Réponses: 7
    Dernier message: 06/06/2008, 13h22
  3. Aide caractère "\" ds mon mot de passe BD Access2000
    Par 810mcu dans le forum VBA Access
    Réponses: 11
    Dernier message: 05/06/2008, 18h48
  4. [RegEx] Interdiction de caractères dans un mot de passe
    Par tarzanjane dans le forum Langage
    Réponses: 3
    Dernier message: 14/09/2007, 18h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo