当前位置: 首页 > news >正文

QT 窗口A覆盖窗口B时,窗口B接受不到鼠标事件

一、问题

        在项目的需求中,地图A上面需要叠放一个任务窗口B,B覆盖了A,导致A接受不到鼠标及滚轮事件。

二、解决方案

        1、Qt::WA_TransparentForMouseEvents 是 Qt 框架中的一个属性,用于使指定的控件及其子控件不响应鼠标事件。当启用此属性时,鼠标事件将传递给其他控件,就像这些控件及其子控件不存在于控件层次结构中一样

        2、利用postEvent给指定控件发送事件。 重载上面widget的事件处理函数,利用postEvent发送事件,让事件分发给下面的窗口

三、案例

//上层窗口
void Widget::mousePressEvent(QMouseEvent *event)
{QWidget::mousePressEvent(event);postMouseEventToSlibings(event);qDebug() << "widget mousePressEvent";
}void Widget::postMouseEventToSlibings(QMouseEvent *event)
{if (this->parentWidget()){this->setAttribute(Qt::WA_TransparentForMouseEvents, true);auto point = this->mapTo(parentWidget(), event->pos());auto widget = parentWidget()->childAt(point);if (widget){point = widget->mapFrom(parentWidget(), point);auto e = new QMouseEvent(event->type(), point, event->button(),event->buttons(), event->modifiers());QApplication::postEvent(widget, e);}}setAttribute(Qt::WA_TransparentForMouseEvents, false);
}

http://www.lryc.cn/news/532505.html

相关文章:

  • Unity安装教学与相关问题
  • [Python人工智能] 四十九.PyTorch入门 (4)利用基础模块构建神经网络并实现分类预测
  • 实现一个 LRU 风格的缓存类
  • 【蓝桥杯嵌入式】4_key:单击+长按+双击
  • 深入理解 C# 与.NET 框架
  • 10. 神经网络(二.多层神经网络模型)
  • spark 性能调优 (一):执行计划
  • “卫星-无人机-地面”遥感数据快速使用及地物含量计算的实现方法
  • 杨氏数组中查找某一数值是否存在
  • c语言对应汇编写法(以中微单片机举例)
  • 详解CSS `clear` 属性及其各个选项
  • 算法设计与分析三级项目--管道铺设系统
  • Page Assist - 本地Deepseek模型 Web UI 的安装和使用
  • VMware Win10下载安装教程(超详细)
  • DS目前曲线代替的网站汇总
  • 具有HiLo注意力的快速视觉Transformer
  • 《AI “造脸术”:生成对抗网络打造超真实虚拟人脸》
  • 2025.2.6总结
  • RK3576——USB3.2 OTG无法识别到USB设备
  • 低代码系统-插件功能分析( 某道云)
  • 如何在 FastAPI 中使用本地资源自定义 Swagger UI
  • wxWidgets生成HTML文件,带图片转base64数据
  • 基于ArcGIS的SWAT模型+CENTURY模型模拟流域生态系统水-碳-氮耦合过程研究
  • 一键掌握多平台短视频矩阵营销/源码部署
  • 2.Python基础知识:注释、变量以及数据类型、标识符和关键字、输入函数、输出函数、运算符、程序类型转换
  • 3NF讲解
  • Spring Boot框架下的单元测试
  • AI测试工程师成长指南:以DeepSeek模型训练为例
  • 【数据结构】_队列的结构与实现
  • 机器学习--2.多元线性回归