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 :

QLineEdit auto-complétion via QCompleter modele MVC


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Par défaut QLineEdit auto-complétion via QCompleter modele MVC
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class A : public QObject
    {
        Q_OBJECT
     
        private:
            B* b;
            QLineEdit* lineEdit;
        public:
            //
    };
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    class B : public QObject
    {
        Q_OBJECT
     
        private:
            A* a;
            QHttp http;
        private slots:
    	void requeteDone(bool);
        public:
            //
    };
    L'objet de type A possède une méthode qui est appelé lorsque qu'un QLineEdit est modifié. Dans le slot ainsi appelé, je récupère le contenu saisi.
    J'utilise une méthode de mon objet b de type B qui par un attribut QHttp envoie une requete http en get.
    "get" est une méthode asynchrone qui rend immédiatement la main.
    J'utilise le signal émis par mon objet QHttp : done(bool) pour savoir quand la requete peut être traitée. Je crée via la source récupérée une QStringList.

    Mon problème :

    mon objet B contient donc une QLineEdit, à laquelle je veux affecter un QCompleter. J'aimerai utiliser l'architecture MVC, enfin plutôt MV avec Qt, pour auto compléter mon QLineEdit. Ce que j'ai testé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class A : public QObject
    {
        Q_OBJECT
     
        private:
            B* b;
            QCompleter* completer;
            QStringListModel* listModel;
            QStringList list;
        public:
            void setList(QStringList newList);
    };
    Dans le constructeur de ma classe A :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    listModel = new QStringListModel(list, this);
    completer = new QCompleter(listModel);
    this->lineEdit->setCompleter(completer);

    Une fois que 'a' a créé la QStringList qui m'intéresse, je fais En théorie, j'ai compris que lorsqu'on modifie le modele d'un MVC, la vue doit alors être modifiée... Or dans mon cas, le QCompléter ne s'actualise pas et à therme ne s'afiche JAMAIS...

  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
    Salut.
    AUrais tu un code un peu plus complet??
    que fait

  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Par défaut
    Désolé pour le manque de code, j'ai deux classes assez grosse, j'ai voulu faire un condensé... Ma méthode setListe permet d'affecter à la QStringList de mon objet a de type A la QStringList créée dans une méthode de mon objet b...

    [EDIT] Au lieu de setter simplement la nouvelle QStringList, j'ai joué cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
      listModel = new QStringListModel(liste, this);
      this->complete->setModel(listModel);
    J'ai eu une mini amélioration, la listbox d'auto-complétion s'affiche quand j'ai tapé 3 caractères (car je fais la recherche partir de 2 caractères) et fait UN backspace mais disparait tel un éclair...

    Du nouveau quand je vire du constructeur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    listModel = new QStringListModel(liste, this);
    this->complete->setModel(listModel);
    L'auto complétion apparait/disparait mais à chaque caractère entré, plus besoin de faire de backspace pour voir le phénomène... :S aidez-moi par pitié
    [/EDIT]

  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
    Met tu à jour ton completer??
    AS tu regardé les example de Qt?

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Avril 2007
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2007
    Messages : 47
    Par défaut
    Citation Envoyé par Mongaulois Voir le message
    Met tu à jour ton completer??
    Non pas directement, je mets à jour l'objet QStringListModel euh non je mets à jour ma QStringList...
    Citation Envoyé par Mongaulois Voir le message
    AS tu regardé les example de Qt?
    Oui bien sur, je ne me serai pas permis de poster sans avoir fait cela...

  6. #6
    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
    sans plus de code, ca va être difficile de t'aider.
    Peux tu faire un exemple simple compilable??

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

Discussions similaires

  1. [Edition] Auto Complétion tout le temps
    Par Tourix dans le forum Eclipse Java
    Réponses: 9
    Dernier message: 21/08/2008, 09h25
  2. [PHP-JS] Auto-complétion [Ajax,PHP & MySQL]
    Par xdiethank dans le forum Langage
    Réponses: 4
    Dernier message: 21/07/2006, 15h18
  3. [Design Pattern]Respecter le modèle MVC
    Par etiennegaloup dans le forum Général Java
    Réponses: 2
    Dernier message: 16/10/2005, 12h00
  4. Auto-complétion pour les mots clés Begin/End
    Par Alex Laforest dans le forum EDI
    Réponses: 2
    Dernier message: 21/09/2005, 21h26
  5. [Design Pattern] Modele MVC
    Par unNew dans le forum Général Java
    Réponses: 27
    Dernier message: 01/09/2005, 00h37

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