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...