Coucou à tous !
En galère sur le lien QML/C++, j'ai l'impression qu'un énorme truc me passe sous le nez et m'empêche de comprendre la moindre notion.
Aussi j'en appelle à l'entraide pour m'aider dans un cas simple mais qui j'espère me fera faire un pas de plus vers la compréhension.
Voici mon but "final" :
une fenêtre avec deux comboBox. Toute les deux sur l'index 0 --> Rien.
Choisir une value (quelque soit son index pour le moment) sur la première entrainerait sur la deuxième un addItems ou quoi que ce soit d'autre qui la remplirai (avec de simple String ou QString ; via un QStringList ou QStringListModel ou autre méthode que je n'aurais pas encore eu la chance de trouver).
M'ayant battu pendant un loooooooong moment avec la doc de Qt, j'ai essayé des centaines et des centaines de solutions mais j'ai l'impression que tout le monde sur internet s'y prend d'une façon différente et que personne ne s'accorde vraiment sur un tuto/cours clair, net et précis (probablement en raison d'un tros gros nombre de choses à évoquer).
Bref, je suis en train de m'embrouiller complètement entre QML to C++ et C++ to QML, connect et Q_property, et j'en passe.
J'ai donc décidé de découper mon but final en toute petites parties :
1) un programme sans QML avec simplement une fenêtre contenant un bouton qui, avec un click dessus, effectuerait un addItems(MaQStringList) sur une ComboBox.
2) un cas simple de transfert de données de C++ à QML
3) un cas simple de transfert de données de QML à C++
Et à peine je commence le 1) que je bloque.
Voici mon code :
MaFenetre.h
Code Qt : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 #ifndef MAFENETRE_H #define MAFENETRE_H #include <QApplication> #include <QWidget> #include <QPushButton> #include <QComboBox> class MaFenetre : public QWidget { public: MaFenetre(); private: QPushButton *m_bouton; QComboBox *m_cbb; public slots: void fillUpComboBox(); }; #endif
MaFenetre.cpp
Code Qt : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 #include "mafenetre.h" MaFenetre::MaFenetre() : QWidget() { setFixedSize(600, 300); m_bouton = new QPushButton("Wé wé remplis la comboBox stoplay", this); m_bouton->setFont(QFont("Comic Sans MS", 9)); m_bouton->move(130, 48); //Construction comboBox m_cbb = new QComboBox(this); m_cbb->move(60, 50); QObject::connect(m_bouton, SIGNAL(clicked()), this, SLOT(fillUpComboBox())); } void MaFenetre::fillUpComboBox() { QStringList list; list << "Un" << "Deux" << "Trois" << "Soleil"; m_cbb->addItems(list); }
main.cpp
Code Qt : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 #include <QApplication> #include <QtWidgets> #include "mafenetre.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); //Création fenêtre MaFenetre fenetre; fenetre.show(); return app.exec(); }
Aussi, j'ai une erreur comme quoi il ne trouve pas le slot QWidget::fillUpComboBox. J'ai essayé de changer en MaFenetre::fillUpComboBox, de changer le this en m_cbb, en MaFenetre, en plein de trucs mais je pense pas que je trouverai comme ça.
Et, si je met le code de fillUpComboBox dans la définition de la classe, tout se passe très bien.
Voici donc mes questions :
1) On peut changer le contenu d'une comboBox APRÈS le début du programme ?
2) Si oui, et je suppose que oui, on s'y prend comment ?
3) Si rien ne cloche au niveau de la "méthode" que j’emploie, c'est que le problème vient de mon connect ? (bravo champion ! D'où ton erreur dans l'Output !!!)
4) Si oui, où se trouve le problème dans le connect donc ?
Voilà ! Ça paraîtra sûrement très simple et basique pour certains mais ça fait 3 jours non-stop que je bloque sur quelque chose que je pensais faire en 5min et je ne vois toujours pas le début du commencement d'un petit progrès dans la compréhension de ce "truc".
Je rajouterai pour tout ceux qui pensent que de grosses bases me manquent avant de poster mon problème sur forum(et c'est sûrement le cas !) que j'accepte avec plaisir tout lien vers un tuto, cours ou autre qui pourrait m'apporter des réponses...
Pour le moment tout ce que j'ai trouvé qui ose utiliser le mot comboBox, c'est une documentation (jolie et complète -peut être même trop) qui a pas l'air d'utiliser le même Qt que moi et qui trouve des solutions là où je trouve des erreurs.
Merci à tous d'avoir lu ce pavé, je m'en remet à vous
Partager