2009-10-12 21 views
0

我正在使用mfc進行Qt遷移,並在我的Mfc應用程序中顯示Qt對話框。 可以在winEvent處理程序中刪除後期QWinWidget嗎? 問題是,我希望我的Mfc應用程序 中的所有打開的Qt對話框在主mfc窗口關閉時自動刪除。 由於WM_DESTROY將所有的子窗口發送(和Qt部件太) 所以我添加以下代碼QwinWidget winEvent處理:刪除QWinWidget

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

能有人評論嚴格的關於安全這個 感謝

回答

0

調用deleteLater()時,在該類中運行的函數內部通常是安全的。在控制回到事件循環函數之前,該對象不會被刪除。我可以看到的唯一潛在問題涉及多線程代碼,對於具有事件處理程序的小部件來說,情況可能不會如此。