qt当通过子进程的方式嵌入窗口后,键盘按键响应不了怎么办?

2023-11-01

案例问题:当通过QProcess类,创建了一个子线程后,再将该子线程中的窗口封装到QWidget后嵌入当前主窗口中后,当在操作主进程窗口后,再去操作子进程窗口时,这时出现子进程窗口无法获取到键盘消息。或者先操作子进程中的窗口后,再切换到主进程窗口中的编辑框也会失去键盘消息。

分析:当在主进程中操作编辑框后,会将键盘事件捕获,而这时候去操作子进程的编辑框时,这个键盘事件已经被主进程独占了!也就导致了键盘失效。那能不能用释放键盘事件去实现了,经测试也不行。只在同一个进程中时有效。在不同进程中这种方式不行。

解决方案:

通过将主进程窗口在切换到子进程窗口时,通过进程间通讯的方式,告诉子进程,让子进程自己将自己的窗口做再次激活处理。来保证当子进程窗口进入后处于激活状态。这样自然而然键盘事件就能响应了。当从子进程窗口切换到主进程中时,也通过类似的方式来操作。

但是当在操作子进程窗口时,同时还需要操作主进程中的一些快捷方式时(比如F1-F12按键),就需要通过系统级别的消息事件,在window下,采用window的hook的方式捕获键盘事件,然后在封装为键盘事件发送到主进程中。因为在qt的工作机制下,当应用处于失去焦点的状态时,键盘事件是失效的。通过注册键盘事件,及过滤器是无法捕抓到键盘事件的。所以只能采用系统级别的hook方式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

qt当通过子进程的方式嵌入窗口后,键盘按键响应不了怎么办? 的相关文章

  • 如何将 std::string& 转换为 C# 引用字符串

    我正在尝试将 C 函数转换为std string参考C 我的 API 如下所示 void GetStringDemo std string str 理想情况下 我希望在 C 中看到类似的东西 void GetStringDemoWrap r
  • STL 迭代器:前缀增量更快? [复制]

    这个问题在这里已经有答案了 可能的重复 C 中的预增量比后增量快 正确吗 如果是 为什么呢 https stackoverflow com questions 2020184 preincrement faster than postinc
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • 如何从 Visual Studio 将视图导航到其控制器?

    问题是解决方案资源管理器上有 29 个项目 而且项目同时具有 ASP NET MVC 和 ASP NET Web 表单结构 在MVC部分中 Controller文件夹中有大约100个子文件夹 每个文件夹至少有3 4个控制器 视图完全位于不同
  • -webkit-box-shadow 与 QtWebKit 模糊?

    当时有什么方法可以实现 webkit box shadow 的工作模糊吗 看完这篇评论错误报告 https bugs webkit org show bug cgi id 23291 我认识到这仍然是一个问题 尽管错误报告被标记为RESOL
  • 无限循环与无限递归。两者都是未定义的吗?

    无副作用的无限循环是未定义的行为 看here https coliru stacked crooked com view id 24e0a58778f67cd4举个例子参考参数 https en cppreference com w cpp
  • 使用 C# 中的 CsvHelper 将不同文化的 csv 解析为十进制

    C 中 CsvHelper 解析小数的问题 我创建了一个从 byte 而不是文件获取 csv 文件的类 并且它工作正常 public static List
  • 结构体的内存大小不同?

    为什么第一种情况不是12 测试环境 最新版本的 gcc 和 clang 64 位 Linux struct desc int parts int nr sizeof desc Output 16 struct desc int parts
  • 为什么 C# 2.0 之后没有 ISO 或 ECMA 标准化?

    我已经开始学习 C 并正在寻找标准规范 但发现大于 2 0 的 C 版本并未由 ISO 或 ECMA 标准化 或者是我从 Wikipedia 收集到的 这有什么原因吗 因为编写 审查 验证 发布 处理反馈 修订 重新发布等复杂的规范文档需要
  • 两个类可以使用 C++ 互相查看吗?

    所以我有一个 A 类 我想在其中调用一些 B 类函数 所以我包括 b h 但是 在 B 类中 我想调用 A 类函数 如果我包含 a h 它最终会陷入无限循环 对吗 我能做什么呢 仅将成员函数声明放在头文件 h 中 并将成员函数定义放在实现文
  • 为什么使用小于 32 位的整数?

    我总是喜欢使用最小尺寸的变量 这样效果就很好 但是如果我使用短字节整数而不是整数 并且内存是 32 位字可寻址 这真的会给我带来好处吗 编译器是否会做一些事情来增强内存使用 对于局部变量 它可能没有多大意义 但是在具有数千甚至数百万项的结构
  • 复制目录下所有文件

    如何将一个目录中的所有内容复制到另一个目录而不循环遍历每个文件 你不能 两者都不Directory http msdn microsoft com en us library system io directory aspx nor Dir
  • 为什么 isnormal() 说一个值是正常的,而实际上不是?

    include
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • 使用特定参数从 SQL 数据库填充组合框

    我在使用参数从 sql server 获取特定值时遇到问题 任何人都可以解释一下为什么它在 winfom 上工作但在 wpf 上不起作用以及我如何修复它 我的代码 private void UpdateItems COMBOBOX1 Ite
  • C++ 中的 include 和 using 命名空间

    用于使用cout 我需要指定两者 include
  • C# 中最小化字符串长度

    我想减少字符串的长度 喜欢 这串 string foo Lorem ipsum dolor sit amet consectetur adipiscing elit Aenean in vehicula nulla Phasellus li
  • 为什么 std::uint32_t 与 uint32_t 不同?

    我对 C 有点陌生 我有一个编码作业 很多文件已经完成 但我注意到 VS2012 似乎有以下语句的问题 typedef std uint32 t identifier 不过 似乎将其更改为 typedef uint32 t identifi
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat

随机推荐

  • 数学规划模型之线性规划

    一 数学规划模型简介 什么是优化问题 解决有限资源的最佳分配问题 即如何用 最好 的方法 使有限的资源能获取最佳的经济效益 数学规划模型分类 线性规划模型 LP 非线性规划模型 NLP 整数规划模型 IP 0 1规划模型 动态规划模型 DP
  • 前端八股文(3)53-84

    53 什么是 ARIA ARIA Accessible Rich Internet Applications 是能够让残障人士更加便利地访问 Web 内容和使用 Web 应用的一套机制 来自 W3C 的网络无障碍计划 Web Accessi
  • 基于wemos D1的无线遥控灯(433m无线模块)

    参考 基于wemos D1的无线遥控灯 433m无线模块 作者 一只小阿大 发布时间 2021 04 16 09 25 53 网址 https blog csdn net qq 44610809 article details 115747
  • 来,看一个真实的用户分析案例!

    大家好 我是小z 也可以叫我阿粥 今天给大家分享一个网易大客户分析的案例 一些思路和技巧 值得借鉴 在直播行业 用户的付费活跃规模及支付习惯与传统行业有很大的不同 直播大R付费是低频高arppu 可能一笔消费就达10万元 可能5分钟刷出10
  • unity3d网格(mesh)编程的研究

    关于unity3d 网格编程 建一个空物体 添加脚本MeshScript void Start gameObject AddComponent
  • 操作系统.存储器管理.简单杂记

    某计算机采用二级页表的分页存储管理方式 按字节编址 页面大小为1024B 每个页表项占2B 逻辑地址结构为 A 64 B 128 C 256 D 512 链接 https www nowcoder com questionTerminal
  • 计算机网络复习-04

    交换机以太网接口双工模式 单工 两个数据站之间只能沿单一方向传输数据 半双工 两个数据站之间可以双向数据传输 但不能同时进行 全双工 两个数据站之间可双向且同时进行数据传输 root localhost ethtool ens33 Sett
  • spring boot admin抛出"status":401,"error":"Unauthorized"异常

    打开spring boot admin的监控平台发现其监控的服务明细打开均抛出异常 Error timestamp 1502749349892 status 401 error Unauthorized message Full authe
  • 10-golang运算符

    文章目录 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 Go 语言内置的运算符有 算术运算符 关系运算符 逻辑运算符 位运算符 赋值运算符 算术运算符 运算符 描述 相加 相减 相乘 相除 求余 注意 自增 和 自减 在Go语言
  • Level Shift的影响及使用及位置

    H2L 一般放在Low Voltage 因为H2L LevelShift的supply Voltage是VDDL 如果放在High Voltage就需要将VDDL的power rail route到VDDH domain 如果高低电压差别不
  • hadoop2.7.2学习笔记05-hadoop文件系统API定义-hadoop文件系统类org.apache.hadoop.fs.FileSystem

    class org apache hadoop fs FileSystem 抽象类FileSystem是访问hadoop文件系统的最原生态的方式 它的非抽象的子类用来实现hadoop支持的各个文件系统 所有基于此接口的的操作必须要支持相对路
  • 喜报|擎创科技携手华胜天成,深度探索企业数字化转型之路

    近日 上海擎创信息技术有限公司 简称 擎创科技 与北京华胜天成科技股份有限公司 简称 华胜天成 达成战略合作伙伴关系 擎创科技副总裁冯陈湧与华胜天成副总裁崔勇 助理总裁郭涛一致认为在金融 保险 证券 政府 能源 运营商 新能源汽车等各领域
  • LVS+Keepalived群集

    LVS Keepalived群集 一 Keepalived实现原理 1 原理 2 Keepalived体系主要模块及其作用 3 Keepalived工具介绍 4 合格的集群应该具备的特性 二 Keepalived的部署 三 LVS Keep
  • IDEA插件

    Statistic 统计项目代码行数
  • python -m SimpleHTTPServer 使用详解

    我们可以很简单的使用 python m SimpleHTTPServer 快速搭建一个http服务 提供一个文件浏览的web服务 在linux系统上安装了Python后 Python自带了一个WEB服务器 SimpleHTTPServer
  • 艾宾浩斯30天计划表_利用艾宾浩斯遗忘曲线来复习

    学习路上 你我相伴 十年苦读 一朝决胜 记忆力是我们学习能力中十分重要的一种能力 无论是学习 工作 生活中处处都能用到 我们每个人都希望自己能够记忆力超群 过目不忘 但现实是 今天记忆的内容如果不及时复习 很快就会忘掉 今天小英就为大家介绍
  • mysql 把select结果保存为临时表,mysql中把查询结果输出到临时表

    mysql 把select结果保存为临时表 有2种方法 第一种 建立正式的表 此表可供你反复查询 drop table if exists a temp create table a temp as select 表字段名称 from 表名
  • 微信小程序直播插件live-player-plugin使用

    1 在你的小程序中 app json这个文件中引入直播组件 plugins live player plugin version 1 1 1 注意填写该直播组件最新版本号 微信开发者工具调试时可获取最新版本号 复制时请去掉注释 provid
  • IP地址与DNS之间的关系——真正理解DNS

    1 IP地址 容易理解而又不太准确的说 IP地址是电脑在网络中的唯一标识 局域网IP是限于局域网内可以相互访问的电脑 公网中的固定IP 可以说是电脑在公网网络中的唯一标识 2 DNS Domain Name System 域名服务系统 简单
  • qt当通过子进程的方式嵌入窗口后,键盘按键响应不了怎么办?

    案例问题 当通过QProcess类 创建了一个子线程后 再将该子线程中的窗口封装到QWidget后嵌入当前主窗口中后 当在操作主进程窗口后 再去操作子进程窗口时 这时出现子进程窗口无法获取到键盘消息 或者先操作子进程中的窗口后 再切换到主进