赞助

MFC主程序中弹出Qt模态框的问题

工作中没有小事:点石成金,滴水成河,只有认真对待自己所做的一切事情,才能克服万难,取得成功。

在项目开发中,有个需求是在主框架是MFC写的应用程序中弹Qt的QDialog模态框,同时任务栏不会显示对话框的图标,之前文章中已经介绍了如果在MFC中嵌入Qt的窗口;我们知道模态框窗口任务栏不显示图标只要指定父窗口就行了,QDialog是Qt的QWidegt派生的,它的父窗口是QWidget类型,但主窗口时MFC,怎么把主窗口的HWND转成QWidget呢,刚开始也不知道如何处理.。

1.强制把HWND转成QWidget* 得到空指针

QWidget *widget = QWidget::find((WId)GetParent(hWnd));

这样拿到的widget是空的,还是没法指定父窗口

 

2.通过QWinWidget来指定父窗口

QWinWidget parent (AfxGetApp()->GetMainWnd()->m_hWnd);//程序主窗口
parent.showCentered();

QDialog dlg(&parent );
if ( dlg.exec() == QDialog::Accepted ) 
{
  .....
}

 

posted @ 2022-05-15 17:30  车臣  阅读(234)  评论(0编辑  收藏  举报