QT QGraphicsItem 图元覆盖导致鼠标点击事件不能传递到被覆盖图元

一、概述

在日常开发中,遇到这样一个问题,线图元和引脚图元重叠,导致点击引脚图元,没有进入引脚图元的鼠标点击事件中。

二、产生原因

如果您的 QGraphicsItem 上有一个图元覆盖了它,可能会导致鼠标事件无法正常触发。这是因为在 QGraphicsScene 中,当多个图元重叠时,只有位于顶部的图元才能接收鼠标事件。 

三、解决办法

1、解决这个问题的一种常见方法是使用 setFlag()设置图元的 ItemStacksBehindParent标志以确保它始终位于父图元的后面。这样可以确保它可以接收鼠标事件而不会被其他图元遮挡。

ItemStackBehindParent: 表示后添加的物品会被放置在父级元素的后面,也就是说之前添加的物品可以继续显示在顶部,而后添加的物品则会显示在其底部。

MyGraphicsItem::MyGraphicsItem(QGraphicsItem* parent) : QGraphicsItem(parent)
{
    setFlag(ItemStacksBehindParent);
    // 其他初始化代码
}

2、另一种方法是调整覆盖图元的z值,确保目标图元位于覆盖图元的上方。您可以使用 setZValue() 方法设置图元的z值。 Z值大的在上方。

// 创建一个矩形图元
QGraphicsRectItem* rectItem = new QGraphicsRectItem(0, 0, 50, 50);
rectItem->setFlag(QGraphicsItem::ItemIsSelectable);  // 添加选择标记
rectItem->setZValue(1);  // 将该图元置于上层

// 创建一个椭圆图元
QGraphicsEllipseItem* ellipseItem = new QGraphicsEllipseItem(0, 0, 50, 50);
ellipseItem->setFlag(QGraphicsItem::ItemIsSelectable);  // 添加选择标记
ellipseItem->setZValue(0);  // 将该图元置于下层

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/204234.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

跟国外客户沟通用词不同,效果可能也不同

每次和客户商量好所需要的商品的细节后,到了开支付链接的阶段,我都会习惯的说:shall we open the payment link for you now? 其实这句话是站在我们销售的立场上来说的,或者说是直接从汉语翻译成英语的句式。 但是最近我却突然想…

内存占用高排查

一、定位内存占用高的进程 top指令是最常见的检测系统运行状态的指令,但是因为展示界面和实时刷新的限制,则通过top指令不一定能够发现占用的内存很高的进程。因此,我们使用ps aux指令检索当前系统下的所有运行的进程。 • 下述指令查看系统…

样品实验Celloxide2021P环脂肪族环氧树脂TDS说明书

样品实验Celloxide2021P环脂肪族环氧树脂TDS说明书 200克 500克 1KG/瓶

c#把bitmap格式转换为其他格式图片

增加引用命名空间 using System.Drawing.Imaging; 打开对话框的方式读入bmp格式图片,转换为其他格式。 也可以直接传入图片名称。 OpenFileDialog ofd new OpenFileDialog();ofd.Title "打开对话框";ofd.InitialDirectory "D:/";ofd.Filt…

强化学习-DQN

网上看来很多,但是还是觉得这篇文章将得最好: 可视化强化学习解释 - Deep Q Networks,循序渐进 |Ketan Doshi 博客 (ketanhdoshi.github.io)

Qt串口助手

QT5 串口助手 ​ 由于C课程作业的需要&#xff0c;用QT5写了个简陋的串口助手。只作为一个简单的案例以供参考&#xff0c;默认读者具有C基础和了解简单的Qt操作。 功能展示 【用QT写了个简单的串口助手】 准备工作 Qt自带有<QSerialPort> 库, 可以方便地配置和调用…

招募 品牌设计师:最具创造力、破坏性、颠覆性

PIX Moving 寻 品牌设计师 重点要求「有破坏性」 设计需求 LOGO VI 市场方向 面向欧洲 案例参考 设计要求 &#xff5c; 这辆充满了创意和激情的 NEV 被命名为 Solo&#xff0c;它是 Z 世代用户的个人移动空间&#xff0c;强调个体的力量与价值。产品特征为去中心化创造、…

Zookeeper从零入门笔记

一、入门 1. 概述 2. 特点 3. 数据结构 4. 应用场景 统一命名服务&#xff1a;nginx也可以实现 统一配置管理&#xff1a; 统一集群管理&#xff1a; 服务器动态上下线&#xff1a; 软负载均衡&#xff1a; 二、本地 1.安装 2. 参数解读 三、集群操作 3.1.1 集群安装…

分享:大数据方向学生学徒参与条件

学生学徒制的实施旨在解决当前新技术企业招聘技能人才难和青年就业难的结构性矛盾&#xff0c;通过生态链链主企业携手院校共同解决毕业年度学生就业问题&#xff0c;按照学生个人意愿&#xff0c;建立以就业导向的学生学徒制关系&#xff0c;签订学徒培养协议确定学生就业岗位…

采购业务中的组织概述

目录 一、采购和库存管理中组织单位的概览二、企业的组织结构三、采购中组织结构3.1采购组织3.2采购组 一、采购和库存管理中组织单位的概览 1、 客户端&#xff1a;在SAP ERP系统中&#xff0c;客户端通过三位数字定义&#xff0c;并代表这独立的数据记录和独立的业务流程。客…

【带头学C++】----- 九、类和对象 ---- 9.1 类和对象的基本概念----(9.1.4---9.1.6)

目录 9.1.4 设计立方体类 ​编辑 9.1.5 成员函数在类的外部实现 9.1.6 类在其他源文件的实现步骤&#xff08;实现类在不同文件的实现&#xff0c;后续引出构造函数&#xff09; 注意:类定义在同文件testclass.h中&#xff0c;而testclass.cpp是用来实现&#xff08;声明&…

JAVA基础进阶(三)

一、权限修饰符的访问权限 需要特别注意的是: 被private修饰的成员变量以及成员方法只能在本类中进行调用&#xff0c;所以在其他类中创建本类对象,无法直接访问私有成员变量和成员方法,只能通过set、get方法间接访问。被public修饰的成员变量以及成员方法可以在任意地方被调用…

CHEM 14 not know

Goals of this lab: • Create and use a calibration curve for the absorbance/concentration relationship for crystal violet • Evaluate absorbance versus time measurements to determine the order of a reaction • Analyze graphs of data to determine best linea…

微信小程序自定义tabber凸起

一、实现效果 二、下载地址 下载地址 源码有错自己修改一下就行

Jmeter之压力测试总结!

一、基本概念 1.线程组N&#xff1a;代表一定数量的并发用户&#xff0c;所谓并发就是指同一时刻访问发送请求的用户。线程组就是模拟并发用户访问。 2.Ramp-Up Period(in seconds)&#xff1a;建立所有线程的周期&#xff0c;就是告诉jmeter要在多久没启动所有线程&#xff…

JMeter 常见易错问题

1、配置错误&#xff1a; 问题&#xff1a;线程组配置错误&#xff0c;例如设置了错误的线程数或循环次数。 解决方法&#xff1a;检查线程组的配置。确保线程数&#xff08;即并发用户数量&#xff09;设置正确&#xff0c;以及循环次数符合预期。如果要模拟不同类型的用户行…

CAS原理详解

文章目录 1. 问题引入2. CAS底层详解1. Java中CAS实现2. CAS源码分析3. CAS操作存在的缺陷4. ABA问题及其解决方案 1. 问题引入 见下面代码 public class Main {private volatile static int sum0;public static void main(String[] args) throws InterruptedException {for …

TZOJ 1376 母牛的故事(递推和递归)

答案1&#xff08;递推&#xff09;&#xff1a; #include<stdio.h> int main() {int n0,i0;int a[55] { 0,1,2,3,4 }; //数组下标就相当于过了几年&#xff0c;以第四年母牛生出的第一只小母牛成年为周期&#xff0c;初始化前四年的值while (scanf("%d", …

【Docker】Swarm的overlay网络

对于理解swarm的网络来讲&#xff0c;个人认为最重要的两个点&#xff1a; 第一是外部如何访问部署运行在swarm集群内的服务&#xff0c;可以称之为入方向流量&#xff0c;在swarm里我们通过ingress来解决。 第二是部署在swarm集群里的服务&#xff0c;如何对外进行访问&…

Linux环境搭建(Ubuntu22.04)+ 配置共享文件夹(Samba)

Linux开发环境准备 搭建Linux开发环境所需要的软件如下&#xff1a; VMware虚拟机&#xff1a;用于运行Linux操作系统的虚拟机软件之一&#xff0c;VMware下载安装在文章中不做说明&#xff0c;可自行百度谢谢Ubuntu光盘镜像&#xff1a;用于源代码编译&#xff0c;有闲置计算…