Problèmes avec un QVBoxLayout
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.
Code:
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;
} |
mon code pour mes dockwidgets:
Code:
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:
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);
} |