博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
将Unreal4打包后的工程嵌入到Qt或者桌面中
阅读量:6841 次
发布时间:2019-06-26

本文共 1916 字,大约阅读时间需要 6 分钟。

hot3.png

嵌入到Qt窗口有2种思路:

1、直接使用WinAPI将窗口直接嵌入,缺点:你需要自己编写移动、Layout之类的调整代码。
2、使用createWindowContainer,将窗口作为QWidget嵌入,缺点:默认Widget会屏蔽掉按键事件,所以需要让其取得,也就是说需要完善好这一方面的逻辑。

 

中间2个函数是用于查找桌面句柄的,另外2块注释的地方分别是,将打包工程嵌入到桌面、嵌入到Qt窗口的代码。

#include "widget.h"#include "ui_widget.h"#include "windows.h"#include 
#include
Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget){ ui->setupUi(this);}Widget::~Widget(){ delete ui;}//网上找到的把窗体嵌入桌面的函数static BOOL enumUserWindowsCB(HWND hwnd,LPARAM lParam){ long wflags = GetWindowLong(hwnd, GWL_STYLE); if(!(wflags & WS_VISIBLE)) return TRUE; HWND sndWnd; if( !(sndWnd=FindWindowEx(hwnd, NULL, L"SHELLDLL_DefView", NULL)) ) return TRUE; HWND targetWnd; if( !(targetWnd=FindWindowEx(sndWnd, NULL, L"SysListView32", L"FolderView")) ) return TRUE; HWND* resultHwnd = (HWND*)lParam; *resultHwnd = targetWnd; return FALSE; }//网上找到的把窗体嵌入桌面的函数HWND findDesktopIconWnd() { HWND resultHwnd = NULL; EnumWindows((WNDENUMPROC)enumUserWindowsCB, (LPARAM)&resultHwnd); return resultHwnd; }void Widget::on_pushButton_clicked(){ HWND hwnWindow=FindWindow(NULL,L"DemoGame"); HWND desktopHwnd=findDesktopIconWnd(); QWindow *window=QWindow::fromWinId((WId)hwnWindow);// //将窗口嵌入到桌面上// LONG styleValue=GetWindowLong(hwnWindow,GWL_STYLE);// styleValue&=~WS_CAPTION;// SetWindowLong(hwnWindow,GWL_STYLE,styleValue);// SetParent(hwnWindow,desktopHwnd);// //嵌入Qt窗口// SetParent(hwnWindow,(HWND)QWidget::winId());// window->showFullScreen(); //嵌入Qt窗口,需要设置焦点让Ue4接受按键事件 QWidget *windowWidget=QWidget::createWindowContainer(window); ui->verticalLayout->addWidget(windowWidget); windowWidget->setFocusPolicy(Qt::StrongFocus); windowWidget->setFocus(); windowWidget->grabKeyboard(); windowWidget->grabMouse(); this->setFocusPolicy(Qt::ClickFocus);}

 

转载于:https://my.oschina.net/robslove/blog/871474

你可能感兴趣的文章
5、条件、循环和其他语句
查看>>
asp 文件上传(ASPUpload组件上传)
查看>>
MVC - 18.缓存
查看>>
Loadrunner11之禁用/启用Action
查看>>
Largest Rectangular Area in a Histogram
查看>>
.NET设计模式(14):代理模式(Proxy Pattern)(转)
查看>>
信息安全书单之逆向工程(未完成)
查看>>
电脑环境变量里面的参数
查看>>
easyui easyui-filebox 显示中文
查看>>
FG面经Prepare: BST to Double LinkedList
查看>>
360开源的pika
查看>>
POJ 2503-Babelfish(map)
查看>>
提高sqlmap爆破效率
查看>>
HDOJ 5288 OO’s Sequence 水
查看>>
centos 扩容
查看>>
采用模拟账号读取Exchange server未读邮件的注意事项(链接邮箱问题)【转】
查看>>
38..Node.js工具模块---底层的网络通信--Net模块
查看>>
小tip: DOM appendHTML实现及insertAdjacentHTML
查看>>
图文介绍openLDAP在windows上的安装配置
查看>>
天气接口
查看>>