qt中父进程窗口嵌入子进程产生的窗口

2024-04-27 16:58

本文主要是介绍qt中父进程窗口嵌入子进程产生的窗口,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

笔者从事客户端开发工作,客户端有很多模块,比如视频预览,视频回放,我这里采取的是多进程架构,客户端框架是一个进程,视频预览是一个进程,视频回放是一个进程,客户端框架负责将视频预览和视频回放产生的窗口嵌入。

工作流程如下:
1.编写一个基于QWidget的工程,产生的窗口作为父窗口
2.编写一个基于QWidget的工程,产生的窗口作为子窗口,其中子窗口的风格要求是 Qt::CustomizeWindowHint | Qt::FramelessWindowHint
3.父进程窗体的构造函数里面启动子进程
4.子进程启动后,将自身的窗口句柄发给父进程
5.父进程收到子进程发来的窗口句柄后,进行嵌入操作

上面5个步骤中,最后一个步骤就是今天要讲的主题,第4个步骤,采取进程间通信的方式进行窗口句柄传递,比如管道方式。

核心代码如下所示,其中szGlobalBuffer表示的是从管道里面得到的子进程的窗口句柄
void ParentWidget::ReceiveChildWinId()
{
printf(“ReceiveChildWinId begin, szGlobalBuffer is %s\n”, szGlobalBuffer);
WId childWnd = atoi(szGlobalBuffer);
if (NULL == m_pSubWidget)
{
m_pSubWidget = QWidget::createWindowContainer(QWindow::fromWinId(childWnd));
}
//m_pSubWidget->setWindowFlags(Qt::CustomizeWindowHint | Qt::FramelessWindowHint);
//m_pSubWidget->resize(CalculateRect().size()); // 防止发送默认尺寸 640 480
m_pSubWidget->setParent(this);
m_pSubWidget->show();
}
其中,
m_pSubWidget = QWidget::createWindowContainer(QWindow::fromWinId(childWnd));
是将子进程的窗口句柄转换成QWidget 对象,然后setParent进行父子窗口绑定。
父进程窗口嵌入子进程窗口,在windows和linux下都验证通过。
linux的效果如下:
在这里插入图片描述
其中红色部分是子进程窗口的窗口。

代码已经上传到csdn上了,vs2015+qt5.9.6,下面是下载地址:

https://download.csdn.net/download/tusong86/12377331

这篇关于qt中父进程窗口嵌入子进程产生的窗口的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/941043

相关文章

Linux kill正在执行的后台任务 kill进程组使用详解

《Linuxkill正在执行的后台任务kill进程组使用详解》文章介绍了两个脚本的功能和区别,以及执行这些脚本时遇到的进程管理问题,通过查看进程树、使用`kill`命令和`lsof`命令,分析了子... 目录零. 用到的命令一. 待执行的脚本二. 执行含子进程的脚本,并kill2.1 进程查看2.2 遇到的

C#使用SendMessage实现进程间通信的示例代码

《C#使用SendMessage实现进程间通信的示例代码》在软件开发中,进程间通信(IPC)是关键技术之一,C#通过调用WindowsAPI的SendMessage函数实现这一功能,本文将通过实例介绍... 目录第一章:SendMessage的底层原理揭秘第二章:构建跨进程通信桥梁2.1 定义通信协议2.2

在.NET项目中嵌入Python代码的实践指南

《在.NET项目中嵌入Python代码的实践指南》在现代开发中,.NET与Python的协作需求日益增长,从机器学习模型集成到科学计算,从脚本自动化到数据分析,然而,传统的解决方案(如HTTPAPI或... 目录一、CSnakes vs python.NET:为何选择 CSnakes?二、环境准备:从 Py

QT Creator配置Kit的实现示例

《QTCreator配置Kit的实现示例》本文主要介绍了使用Qt5.12.12与VS2022时,因MSVC编译器版本不匹配及WindowsSDK缺失导致配置错误的问题解决,感兴趣的可以了解一下... 目录0、背景:qt5.12.12+vs2022一、症状:二、原因:(可以跳过,直奔后面的解决方法)三、解决方

Linux系统管理与进程任务管理方式

《Linux系统管理与进程任务管理方式》本文系统讲解Linux管理核心技能,涵盖引导流程、服务控制(Systemd与GRUB2)、进程管理(前台/后台运行、工具使用)、计划任务(at/cron)及常用... 目录引言一、linux系统引导过程与服务控制1.1 系统引导的五个关键阶段1.2 GRUB2的进化优

java -jar example.jar 产生的日志输出到指定文件的方法

《java-jarexample.jar产生的日志输出到指定文件的方法》这篇文章给大家介绍java-jarexample.jar产生的日志输出到指定文件的方法,本文给大家介绍的非常详细,对大家的... 目录怎么让 Java -jar example.jar 产生的日志输出到指定文件一、方法1:使用重定向1、

Qt中实现多线程导出数据功能的四种方式小结

《Qt中实现多线程导出数据功能的四种方式小结》在以往的项目开发中,在很多地方用到了多线程,本文将记录下在Qt开发中用到的多线程技术实现方法,以导出指定范围的数字到txt文件为例,展示多线程不同的实现方... 目录前言导出文件的示例工具类QThreadQObject的moveToThread方法实现多线程QC

PyTorch中的词嵌入层(nn.Embedding)详解与实战应用示例

《PyTorch中的词嵌入层(nn.Embedding)详解与实战应用示例》词嵌入解决NLP维度灾难,捕捉语义关系,PyTorch的nn.Embedding模块提供灵活实现,支持参数配置、预训练及变长... 目录一、词嵌入(Word Embedding)简介为什么需要词嵌入?二、PyTorch中的nn.Em

一文解密Python进行监控进程的黑科技

《一文解密Python进行监控进程的黑科技》在计算机系统管理和应用性能优化中,监控进程的CPU、内存和IO使用率是非常重要的任务,下面我们就来讲讲如何Python写一个简单使用的监控进程的工具吧... 目录准备工作监控CPU使用率监控内存使用率监控IO使用率小工具代码整合在计算机系统管理和应用性能优化中,监

Linux进程CPU绑定优化与实践过程

《Linux进程CPU绑定优化与实践过程》Linux支持进程绑定至特定CPU核心,通过sched_setaffinity系统调用和taskset工具实现,优化缓存效率与上下文切换,提升多核计算性能,适... 目录1. 多核处理器及并行计算概念1.1 多核处理器架构概述1.2 并行计算的含义及重要性1.3 并