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

Qt Discussion :

[Qt4] QLineEdit et setValidator


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Mic75
    Homme Profil pro
    Développeur Frontend
    Inscrit en
    Janvier 2006
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Frontend
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 143
    Par défaut [Qt4] QLineEdit et setValidator
    Bonjour à tous,

    Je suis confronté à une petite interrogation personnelle quand à l'utilisation d'un QValidator pour un champs de texte basique (QLineEdit).

    En fait je ne comprends pas pourquoi le code suivant ne fait strictement rien (compile, mais le Validator n'a aucun effet) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    QRegExpValidator validator(rex,txtName) ;
    txtName->setValidator(&validator) ;
    Alors que le code suivant fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    txtName->setValidator(new QRegExpValidator(rex,txtName)) ;
    Pour moi les 2 écritures sont similaires, sauf que dans un cas on passe l'adresse d'un validateur préalablement construit en paramètre et dans l'autre on le "construit à la volée".

    D'avance merci pour vois réponses

  2. #2
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    as ton avis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    void foo()
    {
         QRegExpValidator validator(rex,txtName) ;
         txtName->setValidator(&validator) ;
    }
    Qu'elle est la durée de vie de validator??

  3. #3
    Membre confirmé Avatar de Mic75
    Homme Profil pro
    Développeur Frontend
    Inscrit en
    Janvier 2006
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Frontend
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 143
    Par défaut
    Héhé... biensur .
    La portée du validator se limite à la fonction foo.
    Et c'est exactement ce qui se passe dans mon code, qui est appelé dans un constructeur. Le validateur n'existe plus en dehors de celui-ci. Merci pour ta remarque pédagogique .

    Par contre, quand je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    txtName->setValidator(new QRegExpValidator(rex,txtName)) ;
    quelle est la portée du validateur créé à la volée ? Serait-ce la même que mon QLineEdit txtName ?

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    Citation Envoyé par M@t67 Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    txtName->setValidator(new QRegExpValidator(rex,txtName)) ;
    quelle est la portée du validateur créé à la volée ? Serait-ce la même que mon QLineEdit txtName ?
    Comme Qt à toute une philosophie basé sur un arbre pour la gestion mémoire, c'est possible que txtName devienne le parent de ton validator et le détruira lors de sa destruction. Surtout lorsque l'on voie les exemples.

    Mais il me semble que l'on peu utiliser un validator sur plusieurs lineEdit...

  5. #5
    Membre confirmé Avatar de Mic75
    Homme Profil pro
    Développeur Frontend
    Inscrit en
    Janvier 2006
    Messages
    143
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur Frontend
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Janvier 2006
    Messages : 143
    Par défaut
    Vu le constructeur utilisé (ie. new QRegExpValidator(rex,txtName)) et ce que nous dit la doc, je pense que la destruction de txtName entraine la destruction de mon validateur (txtName étant son parent au sens de QT).

    Dans tous les cas, merci pour ces précisions.

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

Discussions similaires

  1. [Qt4] Linker error (vtable)
    Par titus55 dans le forum Qt
    Réponses: 7
    Dernier message: 23/05/2007, 10h04
  2. Dev C++ et QT4
    Par Pe04 dans le forum Dev-C++
    Réponses: 9
    Dernier message: 06/03/2006, 09h47
  3. Visual 2005 & Qt4 Opensource
    Par chkpos dans le forum MFC
    Réponses: 3
    Dernier message: 08/02/2006, 18h08
  4. Réponses: 1
    Dernier message: 28/11/2005, 23h20

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