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 :

Détruire proprement un QWidget


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Par défaut Détruire proprement un QWidget
    Bonjour,

    J'ai constater que l'origine de ma seg fault était un
    qui est sensé être un appel au destructeur ~QWidget().

    C'est pourquoi je cherche une autre solution, et je souhaiterais savoir laquelle serait la plus indiquée pour quitter proprement.

    1. container->deleteLater() : mais je sais pas si c'est propre d'utiliser un slot comme une simple méthode.
    2. container->destroy(true, true) : sachant que mon QWidget a pas mal de fils, je pense c'est pas mal comme solution.
    3. app.setAttribute(Qt::WA_DeleteOnClose) : qui detruira mon QWidget lors de sa fermeture si j'ai bien compris.

    Merci de votre aide.

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 188
    Par défaut
    Un slot est une fonction comme les autres il n'y a (d'après moi) aucun remord a avoir a les utiliser comme telle.(on utilise souvent la fonction show() ou update() par exemple)
    Sinon ton QWidget doit avoir un parent (app au pire). Dans se cas tu n'as pas a t'occuper de sa destruction c'est son parent qui s'en occupera automatiquement.

  3. #3
    Membre éclairé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Par défaut
    Oui mais le QWidget parent doit bien être détruit lui aussi ou alors il y a un mécanisme Qt transparent qui s'en charge automatiquement ?
    Quand bien même ce serait le cas, les méthodes que j'ai citées precedemment doivent bien servir à quelque-chose ?

  4. #4
    yan
    yan est déconnecté
    Rédacteur
    Avatar de yan
    Homme Profil pro
    Ingénieur expert
    Inscrit en
    Mars 2004
    Messages
    10 035
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur expert
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2004
    Messages : 10 035
    Par défaut
    utilise delateLater
    http://qt.developpez.com/faq/index.p...qobject-delete


    Qt::WA_DeleteOnClose peut être une solution. Dépend de ce que tu veux faire.

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    188
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 188
    Par défaut
    Citation Envoyé par juve1897 Voir le message
    Oui mais le QWidget parent doit bien être détruit lui aussi ou alors il y a un mécanisme Qt transparent qui s'en charge automatiquement ?
    Tu crées une QApplication au début de ton prog qui sera parent des widgets que tu vas créer par la suite (ou parent des parents, ect...). cette QApplication sera détruite a la fin du prog et détruira donc en cascade tous ses enfant qui détruiront leur enfant, ect...

    Après faut voir la raison pour laquelle tu veux détruire ton widget.

  6. #6
    Membre éclairé Avatar de LinuxUser
    Inscrit en
    Avril 2007
    Messages
    857
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 857
    Par défaut
    Je veux juste quitter proprement mon application en détruisant tout mes objets dont mon(ou mes QWidgets).
    Par contre, erreur de diagnostic, le delete est hors de cause, c'était pas ça.
    C'étaint un probleme VTK dans mon QWidget.


    RECTIFICATION :
    Le probleme vient de VTK mais aussi du .

Discussions similaires

  1. Réponses: 27
    Dernier message: 27/09/2008, 22h56
  2. Je n'arrive pas à détruire une fenêtre
    Par CORREGE Frédéric dans le forum MFC
    Réponses: 6
    Dernier message: 22/02/2004, 20h28
  3. [mfc]détruire un processus
    Par semenzato dans le forum MFC
    Réponses: 12
    Dernier message: 09/01/2004, 17h01
  4. Détruire un CStatic
    Par hitchie dans le forum MFC
    Réponses: 3
    Dernier message: 06/01/2004, 10h21
  5. Un Sender peut-il s'auto-détruire lors d'un onClick?
    Par Flo. dans le forum C++Builder
    Réponses: 2
    Dernier message: 17/07/2002, 10h31

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