将Unreal4打包后的工程嵌入到Qt或者桌面中
2019独角兽企业重金招聘Python工程师标准>>>
嵌入到Qt窗口有2种思路:
1、直接使用WinAPI将窗口直接嵌入,缺点:你需要自己编写移动、Layout之类的调整代码。
2、使用createWindowContainer,将窗口作为QWidget嵌入,缺点:默认Widget会屏蔽掉按键事件,所以需要让其取得,也就是说需要完善好这一方面的逻辑。
中间2个函数是用于查找桌面句柄的,另外2块注释的地方分别是,将打包工程嵌入到桌面、嵌入到Qt窗口的代码。
#include "widget.h"
#include "ui_widget.h"
#include "windows.h"
#include <QWindow>
#include <QProcess>
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
将Unreal4打包后的工程嵌入到Qt或者桌面中相关推荐
- vue打包后css路径_Vue打包后访问静态资源路径问题
Vue打包后访问静态资源路径问题 Vue介绍中static文件夹里放的是静态资源目录,如图片.字体等. 我们发现运行npm run start后本地图片路径是没问题的,但是打包上传后会怎么样呢? 我们 ...
- no main manifest attribute maven package 运行打包后的jar包报错:xxx.jar中没有主清单属性 通过配置 maven plugin 解决
文章目录 命令行运行生成的jar包,报错 解决 手动修复 修改打包规则 一劳永逸 MANIFEST.MF demo Others IDEA 中关于 main class 的配置 命令行运行生成的jar ...
- vue 打包后找不到路径
在打包后发现点开dist方件;浏览器中一片空白; 我们需要在config文件下的 把 assetsPublicPath: "/", 变成: assetsPublicPath: &q ...
- 使用nw.js将vue项目打包为可在xp系统运行的桌面程序
前情提要 在nw.js入门最如丝般润滑的教程一文中,作者介绍了简单的使用nw运行html文件为桌面程序以及将html文件打包为桌面可执行文件exe. 看vuecli创建的工程打包成exe文件可直接从[ ...
- python3 pyinstaller 打包后执行文件运行错误 No such file or directory 和 Cannot load native module 解决方法
目录 实例1.No such file or directory 错误 --add-binary 参数解决 实例2.Cannot load native module 错误 强制引入解决 总结 使用 ...
- react打包后图片丢失_使用 webpack 搭建 React 项目
简评:相信很多开发者在入门 react 的时候都是使用 create-react-app 或 react-slingshot 这些脚手架来快速创建应用,当有特殊需求,需要修改 eject 出来的 we ...
- react打包后图片丢失_宜信技术实践|指尖前端重构(React)技术调研分析
一.为什么选择React React是当前前端应用最广泛的框架.三大SPA框架 Angular.React.Vue比较. Angular出现最早,但其在原理上并没有React创新的性能优化,且自身相对 ...
- vite2+vue3打包后浏览器打开跨域浏览器的错误
浏览器打开html.index : Access to script at 'file:///D:/hehai/viteObj/dist/assets/index.559fd86e.js' from ...
- UE4 打包后查看日志
一.以DebugGame模式打包 1.WindowsNoEditor→项目名→Saved→Logs里边有每次运行后生成的日志,可以根据时间查看 2.新建exe执行程序快捷方式,右键→属性→目标后添加空 ...
最新文章
- iRobot的30年成长史
- R语言gganimate包创建可视化gif动图、可视化动图:、gganimate包创建动态线型图动画基于transition_time函数、使用geom_point函数显示动画移动的数据点
- 自学python之路(day2)
- 浙大python判断两个字符串是否为变位词_python数据结构与算法 变位词
- Android Binder机制----实现自定义的系统服务
- jvm 参数_6个重要的JVM性能参数
- 复旦大学长跑协会财务制度(初稿)
- FreeSql (三十)读写分离
- Django完整的开发一个博客系统
- CentOS 7安装ifconfig
- Android心电数据分析,基于Android系统的心电信号采集与分析系统设计
- 西安理工大学计算机视觉与应用,赵明华 - 西安理工大学 - 计算机科学与工程学院...
- 数据中台在企业数字化转型中的践行(下篇)
- 骆昊python100天百度网盘_GitHub - yiailake/Python-100-Days: Python - 100天从新手到大师
- 编译A-LOAM,catkin_make后PCL报错
- 使用Travis-CI自动部署博客
- ssm微信小程序美容理发店预约系统app——计算机毕业设计
- badger框架学习 (一)
- Elasticsearch学习1 入门进阶 Linux系统下操作安装Elasticsearch Kibana 初步检索 SearchAPI Query DSL ki分词库 自定义词库
- 王道考研操作系统个人笔记--第一章计算机系统概述