0

我正在使用 mfc 到 Qt 迁移,并且在我的 Mfc 应用程序中显示 Qt 对话框。可以在其 winEvent 处理程序中 deleteLater QWinWidget 吗?问题是我希望在关闭主 mfc 窗口时自动删除 My Mfc 应用程序中所有打开的 Qt 对话框。由于将为所有子窗口(以及 Qt 小部件)发送 WM_DESTROY,因此我在 QwinWidget winEvent 处理程序中添加了以下代码:

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

有人可以评论一下吗谢谢

4

1 回答 1

0

严格考虑deleteLater()调用的安全性,在该类中运行的函数中执行通常是安全的。在控制权返回到事件循环函数之前,不会删除该对象。我能看到的唯一潜在问题涉及多线程代码,对于带有事件处理程序的小部件来说可能不是这种情况。

于 2009-10-12T18:14:10.737 回答