Bonjour,
Pfff... bon là j'vois pas ce qui empèche ce programme de pas faire ce que je veux.
En bon newbie, je me fais une petite appli test où j'aimerais en cliquant sur un bouton créer d'autres bouton les uns alignés aux autres. Un autre bouton me permet de supprimer la liste des boutons créés. Chaque bouton créé est stocké dans un QVector.
Mais j'ai un problème : la suppression fonctionne bien mais pour ce qui concerne la création, seuls les boutons créés depuis mon constructeur apparaissent. Les autres sont semble-t-il créés (quelque part ? où ?) mais n'apparaissent pas dans mon Widget.
Voici mon code :
dockmenu.h
dockmenu.cpp
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 #ifndef DOCKMENU_H #define DOCKMENU_H #include <QApplication> #include <QWidget> #include <QtGui> #include <QVector> class DockMenu : public QWidget { Q_OBJECT public: DockMenu(); public slots: void addMenu(); void delMenu(); private: QVector<QPushButton*> objVector; QPushButton *m_addButton, *m_delButton; QLabel *m_label; }; #endif // DOCKMENU_H
Quelqu'un aurait-il une idée de ce qui ne va pas ?
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
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43 #include "dockmenu.h" DockMenu::DockMenu() : QWidget() { setFixedSize(256, 300); m_addButton = new QPushButton("Add a menu", this); m_delButton = new QPushButton("Del a menu", this); m_delButton->move(0, 20); m_label = new QLabel(this); m_label->move(50,50); m_label->resize(50,50); m_label->setAlignment(Qt::AlignCenter | Qt::AlignHCenter); m_label->setFrameStyle(QFrame::Box); addMenu(); // là ça marche ! addMenu(); // là ça marche ! addMenu(); // là ça marche ! QObject::connect(m_addButton,SIGNAL(clicked()), this, SLOT(addMenu())); // depuis le bouton ça marche pas... QObject::connect(m_delButton,SIGNAL(clicked()), this, SLOT(delMenu())); } void DockMenu::addMenu() { objVector.push_back(new QPushButton(this)); int nbObject = objVector.count(); m_label->setText(QString::number(nbObject)); nbObject -= 1; objVector[nbObject]->setText(QString::number(nbObject+1)); objVector[nbObject]->move(150,45*nbObject); objVector[nbObject]->resize(100,50); } void DockMenu::delMenu() { if (objVector.count() > 0) { m_label->setText(QString::number(objVector.count() - 1)); delete objVector[objVector.count() - 1]; objVector.pop_back(); } }
Merci de votre aide !![]()
Partager