赞助

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 @   车臣  阅读(318)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
历史上的今天:
2019-05-15 CEF 访问需要认证网页或接口(在Request的Headers中添加认证Token)
点击右上角即可分享
微信分享提示