Bonjour,
Voila, j'essaie actuellement de réaliser une petite application, mais je bloque sur un truc tout bête, alors je me disais que quelqu'un ici pourrait surement m'aider:
Voila, j'ai une classe héritant de QMainWindow qui contient des QDockWidget sur les cotés.
Cette classe contient aussi une serie de modules ayant chacun une méthode creerBouton qui renvoie une pointeur sur un QPushButton.
L'idée est que lors de la création des différents modules, la classe principale appelle la méthode de création de bouton de chaque module pour repasser le pointeur au dockwidget qui affichera effectivement les boutons, ceux-ci étant agencés par un QVBoxLayout.
Mais rien ne s'affiche, et je ne comprend pas pourquoi.
Voici le code:
un exemple de fonction de création de bouton, seul l'icône change suivant les différents modules.
mon code pour mes dockwidgets:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 QPushButton* Temperature::creerBouton(QWidget* parent) const { QPushButton* res = new QPushButton(QIcon("icones/temperature.png"), "Temperature", parent); res->setFixedSize(100,100); res->setIconSize(QSize(100,100)); return res; }
Code : 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 class BarreBouton : public QDockWidget { Q_OBJECT public: BarreBouton(QWidget* parent =0, Qt::WindowFlags flags =0); int getNbBouton() const; private: QList<QPushButton*> boutons; QVBoxLayout* layout; public slots: void addBouton(QPushButton* bouton); };
Code : 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 BarreBouton::BarreBouton(QWidget* parent, Qt::WindowFlags flags): QDockWidget(parent, flags) { setFixedWidth(100); setFeatures(QDockWidget::NoDockWidgetFeatures); layout = new QVBoxLayout(this); layout->addWidget(new QPushButton("Tets")); setLayout(layout); } int BarreBouton::getNbBouton() const { return boutons.size(); } void BarreBouton::addBouton(QPushButton* bouton) { QString str; QMessageBox::information(this, "Debug", "Ajout de bouton en "+str.setNum(getNbBouton())); boutons.append(bouton); layout->addWidget(bouton); setLayout(layout); }
Partager