工作中没有小事:点石成金,滴水成河,只有认真对待自己所做的一切事情,才能克服万难,取得成功。
在项目开发中,有个需求是在主框架是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 ) { ..... }