Bonjour à toutes et à tous, voila mon problème.
J'ai créé une classe héritant de QWidget, contenant différents élément, ceci me permettant de créer de multiples objets dans ma fenêtre principal.
Mais lorsque je veux supprimer un objet de cette classe, ça ne fonctionne pas.
Voici ma classe que je nommerai A (simplifier au max):
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 A : public QWidget { Q_OBJECT public: A(QGridLayout *_parameters, double _x, double _y, int _pos, QWidget *parent = 0); ~A(); private: QDoubleSpinBox *xTarget; QDoubleSpinBox *yTarget; };et le code où par exemple je crée un objet et je le supprime juste après pour tester :
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 A::A(QGridLayout *_parameters, double _x, double _y, int _pos, QWidget *parent) : QWidget(parent) { QLabel *targetLabel = new QLabel("Target :"); _parameters->addWidget(targetLabel, _pos, 0); xTarget = new QDoubleSpinBox; _parameters->addWidget(xTarget, _pos, 1); yTarget = new QDoubleSpinBox; _parameters->addWidget(yTarget, _pos, 2); QPushButton *randomCoordinatesTarget = new QPushButton(tr("&Rand")); connect(randomCoordinatesTarget, SIGNAL(clicked()), this, SLOT(ComputeNewRandomTargetCoordinates())); _parameters->addWidget(randomCoordinatesTarget, _pos, 3); } //~~ A::~A() { delete xTarget; delete yTarget; }
- Si j'enlève le delete, le removeWidget ne fonctionne pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 QGridLayout *parameters = new QGridLayout; A *test = new A(parameters, 0, 0, pos); parameters->removeWidget(test); delete test;
- Si je mets le delete, l'appli plante à la création (à cause du destructeur de ma classe A, si je commente les deux lignes de code ça ne plante plus mais ne fait rien).
- la fonction hide ne fonctionne pas non plus.
Merci de votre aide
Partager