IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

Problème de suppression d'un QWidget


Sujet :

Qt

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 91
    Points : 50
    Points
    50
    Par défaut Problème de suppression d'un QWidget
    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;
    };
    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;
    }
    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
     
    QGridLayout *parameters = new QGridLayout;
    A *test = new A(parameters, 0, 0, pos);
    parameters->removeWidget(test);
    delete test;
    - Si j'enlève le delete, le removeWidget ne fonctionne pas.
    - 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

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    91
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 91
    Points : 50
    Points
    50
    Par défaut
    Problème résolu :

    En fait, il faut modifier ma classe A, et mettre tous les objets créés dans un layout, et lier ma classe, comme ce qui suit :

    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
     
    A::A(QGridLayout *_parameters, double _x, double _y, int _pos, QWidget *parent)
        : QWidget(parent)
    {
        QGridLayout *layout = new QGridLayout;
     
        QLabel *targetLabel = new QLabel("Target :");
        layout->addWidget(targetLabel, 0, 0);
        xTarget = new QDoubleSpinBox;
        layout->addWidget(xTarget, 0, 1);
        yTarget = new QDoubleSpinBox;
        layout->addWidget(yTarget, 0, 2);
        QPushButton *randomCoordinatesTarget = new QPushButton(tr("&Rand"));
        connect(randomCoordinatesTarget, SIGNAL(clicked()), this, SLOT(ComputeNewRandomTargetCoordinates()));
        layout->addWidget(randomCoordinatesTarget, 0, 3);
     
        setLayout(layout);
     
        _parameters->addWidget(this, _pos, 0);
    }
    Voila peu être que cela aidera quelqu'un plus tard

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème de suppression de ligne dans ma base !
    Par gregman dans le forum ASP
    Réponses: 2
    Dernier message: 21/05/2005, 08h14
  2. Problème de suppression de fichier
    Par sorry60 dans le forum Assembleur
    Réponses: 7
    Dernier message: 23/04/2005, 18h33
  3. [JTable] problème après suppression d'une ligne
    Par fredo3500 dans le forum Composants
    Réponses: 7
    Dernier message: 17/03/2005, 10h01
  4. [Excel - VBA] Problème de suppression de lignes...
    Par beholder2 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 28/01/2005, 17h27
  5. Réponses: 4
    Dernier message: 16/04/2004, 08h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo