QLineEdit auto-complétion via QCompleter modele MVC
Code:
1 2 3 4 5 6 7 8 9 10
| class A : public QObject
{
Q_OBJECT
private:
B* b;
QLineEdit* lineEdit;
public:
//
}; |
Code:
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:
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:
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
Code:
a->setList(listName);
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...