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

qt QGraphicsItem详解

一、概述

QGraphicsItem是Qt框架中图形视图框架(Graphics View Framework)的一个核心组件,它是用于表示2D图形元素的基类。

它支持的功能包括:

  • 设置和获取图形项的位置和尺寸。
  • 控制图形项的外观,如颜色、笔刷、边框等。
  • 处理图形项的交互事件,如鼠标点击、拖动等。
  • 实现图形项的碰撞检测、坐标转换等功能。

二、常用方法

  • QGraphicsItem(QGraphicsItem *parent = nullptr):构造函数,可以指定父项。
  • virtual QRectF boundingRect() const:必须由子类实现的纯虚函数,返回项的边界矩形。
  • virtual void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr):必须由子类实现的纯虚函数,用于自定义项的渲染逻辑。
  • QPointF pos() const:返回项在其父项坐标系中的位置。
  • void setPos(const QPointF &pos):设置项在其父项坐标系中的位置。
  • QGraphicsItem *parentItem() const:返回项的父项。
  • QList<QGraphicsItem *> children() const:返回项的所有直接子项的列表。
  • virtual bool contains(const QPointF &point) const:如果指定的点在项的边界矩形内,则返回true。
  • virtual QPainterPath shape() const:返回项的形状路径,用于更精确的碰撞检测。
  • virtual bool collidesWithItem(const QGraphicsItem *other, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const:如果项与另一个项发生碰撞,则返回true。
  • virtual QVariant itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value):当项的属性即将发生变化时,会发出此信号。
  • setZValue(qreal z):设置z值
#include <QApplication>
#include <QGraphicsScene>
#include <QGraphicsView>
#include <QGraphicsItem>
#include <QPainter>class CustomItem : public QGraphicsItem {
public:CustomItem() {}// 返回项的边界矩形QRectF boundingRect() const override {return QRectF(0, 0, 100, 100);}// 绘制项void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override {painter->setBrush(Qt::blue);painter->drawRect(boundingRect());}
};int main(int argc, char *argv[]) {QApplication app(argc, argv);QGraphicsScene scene;CustomItem *item = new CustomItem();scene.addItem(item); // 将自定义项添加到场景QGraphicsView view(&scene);view.setRenderHint(QPainter::Antialiasing);view.resize(400, 300);view.show();return app.exec();
}

qq群交流:698593923

觉得有帮助的话,打赏一下呗。。

           

相关文章:

qt QGraphicsItem详解

一、概述 QGraphicsItem是Qt框架中图形视图框架&#xff08;Graphics View Framework&#xff09;的一个核心组件&#xff0c;它是用于表示2D图形元素的基类。 它支持的功能包括&#xff1a; 设置和获取图形项的位置和尺寸。控制图形项的外观&#xff0c;如颜色、笔刷、边框…...

LVS搭建负载均衡

LVS搭建负载均衡 引言 在现代互联网应用中&#xff0c;用户对服务的可用性和响应速度要求越来越高。为了应对高并发请求&#xff0c;保证系统的稳定性和容错能力&#xff0c;负载均衡技术应运而生。LVS&#xff08;Linux Virtual Server&#xff09;是一种高性能、高可用性的…...

Unity MVC框架演示 1-1 理论分析

本文仅作学习笔记分享与交流&#xff0c;不做任何商业用途&#xff0c;该课程资源来源于唐老狮 1.一般的图解MVC 什么是MVC我就不说了&#xff0c;老生常谈&#xff0c;网上有大量的介绍&#xff0c;想看看这三层都起到什么职责&#xff1f;那就直接上图吧 2.我举一个栗子 我有…...

基于springboot+vue人脸识别的考勤管理系统(源码+定制+开发)

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…...

【api连接ChatGPT的最简单方式】

通过api连接ChatGPT的最简单方式 建立client 其中base_url为代理&#xff0c;若连接官网可省略&#xff1b;配置环境变量 from openai import OpenAI client OpenAI(base_url"https://api.chatanywhere.tech/v1" )或给出api和base_url client OpenAI(api_key&…...

技术成神之路:设计模式(二十)装饰模式

介绍 装饰模式&#xff08;Decorator Pattern&#xff09;是一种结构型设计模式&#xff0c;它允许在不改变对象自身的情况下&#xff0c;动态地为对象添加额外的职责。这个模式通常用于增强或改变对象的功能。 1.定义 装饰模式通过创建一个装饰类&#xff0c;将功能动态地添加…...

利用特征点采样一致性改进icp算法点云配准方法

1、index、vector 2、kdtree和kdtreeflann 3、if kdtree.radiusSearch(。。。) > 0)...

LabVIEW惯性导航系统仿真平台

LabVIEW开发捷联惯性导航系统仿真平台&#xff0c;采用模块化设计&#xff0c;利用LabVIEW的图形化编程特性&#xff0c;提高了系统仿真的效率和精度&#xff0c;同时具备良好的可扩展性和用户交互性。 项目背景 当前&#xff0c;惯性导航系统&#xff08;INS&#xff09;的研…...

es简单实现文章检索功能

使用的api是&#xff1a;Elasticsearch Java API client 8.0 官网&#xff1a;Package structure and namespace clients | Elasticsearch Java API Client [8.15] | Elastic 1.建立索引库 实现搜索功能字段&#xff1a; title&#xff1a;文章标题content&#xff1a;文章内…...

太速科技-607-基于FMC的12收和12发的光纤子卡

基于FMC的12收和12发的光纤子卡 一、板卡概述 本卡是一个FPGA夹层卡&#xff08;FMC&#xff09;模块&#xff0c;可提供高达2个CXP模块接口&#xff0c;提供12路收&#xff0c;12路发的光纤通道。每个通道支持10Gbps,通过Aurora协议&#xff0c;可以组成X4&#xff0…...

UEFI学习笔记(十):系统表与ACPI表的遍历

一、概述 在 UEFI 系统表中&#xff0c;有几个关键的表用于提供系统信息、服务和硬件抽象。这些表可以通过 EFI_SYSTEM_TABLE 访问&#xff0c;常见的 UEFI 系统表如下&#xff1a; 1、EFI_SYSTEM_TABLE (系统表) EFI_SYSTEM_TABLE 是一个指针&#xff0c;包含多个服务和系统…...

【深度学习基础模型】液态状态机(Liquid State Machines, LSM)详细理解并附实现代码。

【深度学习基础模型】液态状态机&#xff08;Liquid State Machines, LSM&#xff09;详细理解并附实现代码。 【深度学习基础模型】液态状态机&#xff08;Liquid State Machines, LSM&#xff09;详细理解并附实现代码。 文章目录 【深度学习基础模型】液态状态机&#xff0…...

深入理解链表(SList)操作

目录&#xff1a; 一、 链表介绍1.1、 为什么引入链表1.2、 链表的概念及结构1.3、 链表的分类 二、 无头单向非[循环链表](https://so.csdn.net/so/search?q循环链表&spm1001.2101.3001.7020)的实现2.1、 [单链表](https://so.csdn.net/so/search?q单链表&spm1001.2…...

03. prometheus 监控 Linux 主机

文章目录 一、prometheus 监控 Linux 主机二、防火墙打开端口1. 方式一&#xff1a;使用 iptables 添加白名单&#xff08;推荐使用&#xff09;&#xff1a;2. 方式二&#xff1a;重载防火墙 一、prometheus 监控 Linux 主机 1. 官网下载 node_exporter 官网&#xff1a;htt…...

AI占据2024诺贝尔两大奖项,是否预示着未来AI即一切?

本次诺贝尔物理学和学奖的获得者都与AI息息相关&#xff0c;可谓是“AI领域的大丰收”。 2024年诺贝尔物理学奖揭晓&#xff1a;瑞典皇家科学院公布了2024年诺贝尔物理学奖的获得者。他们是美国的约翰霍普菲尔德&#xff08;John J. Hopfield&#xff09;&#xff0c;以及加拿…...

[已解决] Install PyTorch 报错 —— OpenOccupancy 配环境

目录 关于 常见的初始化报错 环境推荐 torch, torchvision & torchaudio cudatoolkit 本地pip安装方法 关于 OpenOccupancy: 语义占用感知对于自动驾驶至关重要&#xff0c;因为自动驾驶汽车需要对3D城市结构进行细粒度感知。然而&#xff0c;现有的相关基准在城市场…...

6. PH47 代码框架硬件开发环境搭建

概述 PH47代码框架的硬件开发环境搭建同样简单&#xff0c; 建立基本的 PH47 框架学习或二次开发的硬件开发环境所需设备如下&#xff1a; BBP 飞控板及相关软硬件: BBP飞控板&#xff0c;或者至少一块Stm32F411核心板&#xff08;WeAct Studio&#xff09;Stm32程序烧录工具…...

package.json配置

package.json配置 描述配置文件配置脚本配置依赖配置发布配置系统配置第三方配置 描述配置 name : 项目名称&#xff0c;第三方包可以通过npm install 包名安装 "name":"react"version : 项目版本&#xff0c;项目版本号 "version" : "18.2…...

视频怎么转gif动图?5个简单转换方法快来学(详细教程)

相信大家在社交平台上会经常看到一些有趣的gif动图表情包&#xff0c;有些小伙伴就会问&#xff1a;这些GIF动图是如何制作的呢&#xff1f;一般GIF动图表情包可以用视频来制作&#xff0c;今天小编就来给大家分享几个视频转成GIF动图的方法&#xff0c;相信通过以下的几个方法…...

10月更新:优维EasyOps®需求解决更彻底,功能体验再升级

升 级 不 止 步 欢迎来到 需求至上&#xff0c;功能完善 的 \ EasyOps 7.5版本 / &#x1f447; >> 联动架构视图&#xff1a;深度融合监控与资源拓扑 传统上&#xff0c;依赖监控态势感知系统固有的分层拓扑结构虽有其优势&#xff0c;但在处理复杂系统尤其是核心数…...

Spring_couplet_generation 从零开始环境配置:Windows系统下的Python与CUDA安装

Spring_couplet_generation 从零开始环境配置&#xff1a;Windows系统下的Python与CUDA安装 你是不是也遇到过这种情况&#xff1f;看到别人用AI模型生成对联、写诗&#xff0c;觉得特别酷&#xff0c;自己也想动手试试。结果第一步——搭环境&#xff0c;就被卡住了。网上教程…...

Ryzen平台硬件调试终极指南:从问题诊断到系统优化的实战路径

Ryzen平台硬件调试终极指南&#xff1a;从问题诊断到系统优化的实战路径 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: http…...

ThinkPHP6+UniApp实战:手把手教你用宝塔面板部署Niushop V5.5.0多门店商城(含全插件配置)

ThinkPHP6UniApp实战&#xff1a;宝塔面板部署Niushop V5.5.0多门店商城全流程解析 在数字化转型浪潮中&#xff0c;电商系统的快速部署能力已成为技术团队的核心竞争力之一。本文将带您深入实战&#xff0c;从零开始完成Niushop V5.5.0多门店商城系统的完整部署。不同于基础教…...

Mac开发者必备:OpenClaw对接Qwen3-32B镜像开发环境配置

Mac开发者必备&#xff1a;OpenClaw对接Qwen3-32B镜像开发环境配置 1. 为什么选择OpenClawQwen3-32B组合 去年我在开发一个自动化文档处理工具时&#xff0c;发现常规的RPA方案无法处理非结构化数据。直到尝试将OpenClaw与Qwen3-32B结合&#xff0c;才真正实现了"理解-决…...

GeoServer发布PostGIS数据时,那个容易忽略的SQL注入风险点,你检查了吗?

GeoServer动态SQL视图的安全实践&#xff1a;如何规避PostGIS数据发布中的SQL注入风险 在GIS服务部署的日常工作中&#xff0c;GeoServer与PostGIS的组合堪称黄金搭档。但当我们陶醉于SQL视图带来的灵活性时&#xff0c;一个潜伏的安全威胁往往被忽视——SQL注入漏洞。这种漏洞…...

别再只盯着7805了!聊聊LDO选型时那些容易被忽略的关键参数(附实测对比)

LDO选型实战指南&#xff1a;超越7805的五大高阶参数解析 在电子设计领域&#xff0c;低压差线性稳压器(LDO)如同电路系统中的"毛细血管"&#xff0c;负责将能量精准输送到每个功能模块。当大多数工程师还在使用上世纪设计的7805时&#xff0c;现代LDO芯片早已进化出…...

【菜鸟飞】Conda环境管理与vscode无缝协作实战指南

1. Conda环境管理入门&#xff1a;从零搭建Python工作区 第一次接触Conda时&#xff0c;我被它强大的环境隔离能力惊艳到了。想象你正在装修房子&#xff0c;Conda就像给你的每个项目分配了独立的房间——在这个房间里&#xff0c;你可以随意摆放家具&#xff08;安装依赖包&am…...

什么是JVM——餐厅类比

目录 一、核心前提 二、JVM 整体定位&#xff08;餐厅类比总纲&#xff09; 三、JVM 核心模块拆解&#xff08;餐厅类比 1:1 对应&#xff09; 模块 1&#xff1a;类加载器子系统 → 餐厅 “收单 归档员” 核心动作&#xff1a; 关键补充&#xff08;对应你的内存疑问&a…...

如何使用Photon光影包提升Minecraft视觉体验:从安装到高级配置完全指南

如何使用Photon光影包提升Minecraft视觉体验&#xff1a;从安装到高级配置完全指南 【免费下载链接】photon A shader pack for Minecraft: Java Edition 项目地址: https://gitcode.com/gh_mirrors/photon3/photon Photon光影包是一款为Minecraft: Java Edition设计的高…...

ESP8266红外TCP服务框架:轻量级协议网关设计

1. 项目概述IrServiceBase是专为 ESP8266 系列微控制器&#xff08;包括 ESP-01、NodeMCU、Wemos D1 Mini 等&#xff09;设计的 Arduino C 库&#xff0c;其核心定位并非直接驱动红外发射/接收硬件&#xff0c;而是构建一个可复用、可扩展的 TCP/IP 红外服务框架。该库不实现底…...