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或者桌面中相关推荐

  1. vue打包后css路径_Vue打包后访问静态资源路径问题

    Vue打包后访问静态资源路径问题 Vue介绍中static文件夹里放的是静态资源目录,如图片.字体等. 我们发现运行npm run start后本地图片路径是没问题的,但是打包上传后会怎么样呢? 我们 ...

  2. no main manifest attribute maven package 运行打包后的jar包报错:xxx.jar中没有主清单属性 通过配置 maven plugin 解决

    文章目录 命令行运行生成的jar包,报错 解决 手动修复 修改打包规则 一劳永逸 MANIFEST.MF demo Others IDEA 中关于 main class 的配置 命令行运行生成的jar ...

  3. vue 打包后找不到路径

    在打包后发现点开dist方件;浏览器中一片空白; 我们需要在config文件下的 把 assetsPublicPath: "/", 变成: assetsPublicPath: &q ...

  4. 使用nw.js将vue项目打包为可在xp系统运行的桌面程序

    前情提要 在nw.js入门最如丝般润滑的教程一文中,作者介绍了简单的使用nw运行html文件为桌面程序以及将html文件打包为桌面可执行文件exe. 看vuecli创建的工程打包成exe文件可直接从[ ...

  5. python3 pyinstaller 打包后执行文件运行错误 No such file or directory 和 Cannot load native module 解决方法

    目录 实例1.No such file or directory 错误  --add-binary 参数解决 实例2.Cannot load native module 错误 强制引入解决 总结 使用 ...

  6. react打包后图片丢失_使用 webpack 搭建 React 项目

    简评:相信很多开发者在入门 react 的时候都是使用 create-react-app 或 react-slingshot 这些脚手架来快速创建应用,当有特殊需求,需要修改 eject 出来的 we ...

  7. react打包后图片丢失_宜信技术实践|指尖前端重构(React)技术调研分析

    一.为什么选择React React是当前前端应用最广泛的框架.三大SPA框架 Angular.React.Vue比较. Angular出现最早,但其在原理上并没有React创新的性能优化,且自身相对 ...

  8. vite2+vue3打包后浏览器打开跨域浏览器的错误

    浏览器打开html.index : Access to script at 'file:///D:/hehai/viteObj/dist/assets/index.559fd86e.js' from ...

  9. UE4 打包后查看日志

    一.以DebugGame模式打包 1.WindowsNoEditor→项目名→Saved→Logs里边有每次运行后生成的日志,可以根据时间查看 2.新建exe执行程序快捷方式,右键→属性→目标后添加空 ...

最新文章

  1. iRobot的30年成长史
  2. R语言gganimate包创建可视化gif动图、可视化动图:、gganimate包创建动态线型图动画基于transition_time函数、使用geom_point函数显示动画移动的数据点
  3. 自学python之路(day2)
  4. 浙大python判断两个字符串是否为变位词_python数据结构与算法 变位词
  5. Android Binder机制----实现自定义的系统服务
  6. jvm 参数_6个重要的JVM性能参数
  7. 复旦大学长跑协会财务制度(初稿)
  8. FreeSql (三十)读写分离
  9. Django完整的开发一个博客系统
  10. CentOS 7安装ifconfig
  11. Android心电数据分析,基于Android系统的心电信号采集与分析系统设计
  12. 西安理工大学计算机视觉与应用,赵明华 - 西安理工大学 - 计算机科学与工程学院...
  13. 数据中台在企业数字化转型中的践行(下篇)
  14. 骆昊python100天百度网盘_GitHub - yiailake/Python-100-Days: Python - 100天从新手到大师
  15. 编译A-LOAM,catkin_make后PCL报错
  16. 使用Travis-CI自动部署博客
  17. ssm微信小程序美容理发店预约系统app——计算机毕业设计
  18. badger框架学习 (一)
  19. Elasticsearch学习1 入门进阶 Linux系统下操作安装Elasticsearch Kibana 初步检索 SearchAPI Query DSL ki分词库 自定义词库
  20. 王道考研操作系统个人笔记--第一章计算机系统概述

热门文章

  1. 基于Python的频谱分析(一)
  2. PEAK6 2020校招OA
  3. Vue创建组件的三种方式
  4. Arch Linux 指南——安装基本系统
  5. String字符串类的获取功能
  6. 身份证第18位(校验码)的计算方法
  7. 不得不知的小程序基本知识
  8. linux php 调用exec() 中,svn遇到的问题
  9. ZeroC ICE java异步实现方式(ami/amd)
  10. PHP ----MySQL 数据库