2010-06-30 4 views
6

J'ai défini l'attribut de widget WA_DeleteOnClose dans une MainWindow.Lors de la définition de l'attribut WA_DeleteOnClose sur une fenêtre principale Qt, le programme se bloque lors de la suppression du pointeur d'interface utilisateur

setAttribute(Qt::WA_DeleteOnClose); 

Cependant, chaque fois que je ferme la fenêtre principale, je reçois une erreur de segmentation dans son destructor, qui n'a delete ui;

En un mot, créé une interface graphique Qt4 Application dans Créateur, a ajouté le setAttribute(Qt::WA_DeleteOnClose); au constructeur, programme se bloque maintenant à la sortie.

Répondre

9

Avez-vous une erreur de segmentation dans son destructeur la première fois ou la deuxième fois? Rappelez-vous que votre destructeur de fenêtre principale ne devrait fonctionner qu'une seule fois. C'est-à-dire qu'il doit exécuter soit en raison d'un débobinage de pile, ou en raison de WA_DeleteOnClose, pas les deux. IIRC, Creator placera la fenêtre principale sur la pile main(). Par conséquent, lorsque main() renvoie la fenêtre principale est détruite.

+4

Il s'avère que j'ai accidentellement déclaré ma classe 'MainWindow' sur la pile au lieu du tas dans' main() '. Votre réponse m'a amené à réaliser cela; Merci. :) –