2009-10-12 8 views
0

J'utilise la migration mfc vers Qt et je montre des boîtes de dialogue Qt dans mon application Mfc. Est-il correct de supprimer plus tard QWinWidget dans son gestionnaire winEvent? Le fait est que je veux que toutes mes boîtes de dialogue Qt ouvertes dans l'application My Mfc soient automatiquement supprimées lorsque la fenêtre principale de mfc est fermée. Depuis WM_DESTROY sera envoyé pour toutes les fenêtres de l'enfant (et Qt widgets aussi) J'ajouté le code suivant dans le gestionnaire QwinWidget WinEvent:Suppression de QWinWidget

QWinWidget::winEvent(MSG * message, long * result) 
     { 
       ........ 
       if(message->message == WM_DESTROY) 
        deleteLater(); 
       return false; 
     } 

Quelqu'un peut-il commenter ce Merci

Répondre

0

strictement en ce qui concerne la sécurité de l'appel deleteLater(), il est généralement possible de le faire à l'intérieur d'une fonction s'exécutant dans cette classe. L'objet ne sera pas supprimé tant que le contrôle ne sera pas rétabli dans les fonctions de la boucle d'événements. Les seuls problèmes potentiels que je peux voir impliquent le code multithread, ce qui ne serait probablement pas le cas pour un widget avec ses gestionnaires d'événements.