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 :

QTableItem et validator


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 QTableItem et validator
    Bonjour à tous,

    Je souhaiterais créer un tableau dont les cellules seraient associées à un Validator.

    Dans un premier temps, j'ai fait en sorte de "transfomer" les cellules de mon tableau en QLineEdit via la méthode setCellWidget, le problème est que le QTable qui contient ce genre de cellule/widget ne semble pas envoyer de signal si l'on modifie l'une de ces cellules/widget.

    Je pense donc qu'il faut plutôt convertir les cellules du tableaux en QTableItem, mais le problème est que je ne sais pas du tout comment définir un Validator pour ce genre de cellule. J'ai bien vu qu'on pouvait récupérer un QLineEdit via la méthode createEditor, mais je ne sais pas quoi en faire. Par exemple j'ai défini un Validator pour le QLineEdit renvoyé par createEditor, mais cela n'a aucun effet.

    Merci d'avance pour vois suggestions

  2. #2
    Membre chevronné

    Inscrit en
    Octobre 2007
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 234
    Par défaut
    Si tu crées un QValidator que tu affectes à ton QLineEdit que tu place dans ta cellule avec setCellWidget(), ça ne marche pas ?

    J'ai fait un rapide essai et chez moi les valeurs de la cellule étaient bien restreintes dans les bornes de mon QValidator.

  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
    Bonjour Kinji,

    Si tu crées un QValidator que tu affectes à ton QLineEdit que tu place dans ta cellule avec setCellWidget(), ça ne marche pas ?
    Si, ça marche pour moi aussi, mais le problème est que j'ai besoin de savoir quand une cellule du tableau perd le focus, tout en connaissant la ligne et la colonne du tableau auxquelles elle appartient.

    Pour ce faire je pensais utiliser le signal currentChanged de mon QTable, mais le problème est que pour les cellules du tableau converties en widget, le signal ne se lance pas.

  4. #4
    Membre chevronné

    Inscrit en
    Octobre 2007
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 234
    Par défaut
    Donc vu que le signal est pas déclenché avec avec les QLineEdit dans les cells, essaie de dériver QTableItem et réimplémente createEditor un peu comme dans la doc. Dans ton cas il faut créer un QLineEdit auquel tu ajoutes un QValidator.

    Ensuite il doit falloir faire des setItem dans la QTable pour mettre les éléments de ta classe dérivée.

    Bon je dis tout ça à peu près, Qt 3 c'est un peu loin, pour moi.

  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
    Malheureusement pour moi, QT3 est une contrainte imposée.
    Pour répondre à ta suggestion ,j'ai déjà pensé à dériver QTableItem, cependant 2 choses me retiennent de le faire jusqu'à maintenant :

    • La doc nous dit que l'implémentation par défaut de createEditor renvoie un QLineEdit (createEditor) . Donc je me demande si on ne peut pas directement placer le Validator sur le QLineEdit renvoyé par défaut


    • Je ne saisi toujours pas le fonctionnement des QTableItem. A quel moment par exemple doit-on appeler createEditor et setContentFromEditor ?


    The returned widget should preferably be invisible, ideally with QTable::viewport() as parent.
    Ça non plus je ne comprends pas, ça se trouve également dans la doc de la méthode createEditor

  6. #6
    Membre chevronné

    Inscrit en
    Octobre 2007
    Messages
    234
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 234
    Par défaut
    Pour le premier point c'est sur que si c'est possible de récupérer les QLineEdit tu peux y mettre le validator mais je crois pas que ça soit faisable sans faire tes propres QTableItem.

    Pour le second, je pense que c'est Qt qui appelle createEditor() quand il en a besoin, ce qui dépend de l'EditType de la table. (http://qt.developpez.com/doc/3.3/qta...#EditType-enum)

    Donc quand tu dérives QTableItem il faut redéfinir createEditor(), setContentFromEditor() etc. qui sont appelées par Qt pour éditer et mettre à jour la cellule de la table via ton widget d'édition personnalisé.

    Pour la citation de la doc, ça dit que le widget créé pour l'édition devrait être créé invisble et avec pour parent le viewport de la table. A mon avis c'est juste pour avoir un affichage correct, genre le widget ne s'affiche pas trop tôt.

Discussions similaires

  1. test et validation de votre programme!!!
    Par l'indien dans le forum C
    Réponses: 8
    Dernier message: 25/06/2003, 15h43
  2. validation d'un XML schema
    Par nicolas_jf dans le forum Valider
    Réponses: 2
    Dernier message: 05/05/2003, 11h25
  3. est ce un XSchema Valide?
    Par Slash dans le forum Valider
    Réponses: 4
    Dernier message: 06/03/2003, 14h01
  4. tester si une date est valide
    Par Andry dans le forum Langage
    Réponses: 5
    Dernier message: 17/09/2002, 11h54
  5. [VB6] Evenement validate
    Par grosjej dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 05/09/2002, 15h46

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