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 ) { ..... }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
2019-05-15 CEF 访问需要认证网页或接口(在Request的Headers中添加认证Token)