当前位置: 首页 > 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

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

           

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

相关文章:

  • LVS搭建负载均衡
  • Unity MVC框架演示 1-1 理论分析
  • 基于springboot+vue人脸识别的考勤管理系统(源码+定制+开发)
  • 【api连接ChatGPT的最简单方式】
  • 技术成神之路:设计模式(二十)装饰模式
  • 利用特征点采样一致性改进icp算法点云配准方法
  • LabVIEW惯性导航系统仿真平台
  • es简单实现文章检索功能
  • 太速科技-607-基于FMC的12收和12发的光纤子卡
  • UEFI学习笔记(十):系统表与ACPI表的遍历
  • 【深度学习基础模型】液态状态机(Liquid State Machines, LSM)详细理解并附实现代码。
  • 深入理解链表(SList)操作
  • 03. prometheus 监控 Linux 主机
  • AI占据2024诺贝尔两大奖项,是否预示着未来AI即一切?
  • [已解决] Install PyTorch 报错 —— OpenOccupancy 配环境
  • 6. PH47 代码框架硬件开发环境搭建
  • package.json配置
  • 视频怎么转gif动图?5个简单转换方法快来学(详细教程)
  • 10月更新:优维EasyOps®需求解决更彻底,功能体验再升级
  • 黑马javaWeb笔记重点备份1:三层架构、IOC、DI
  • 大坝渗流监测设备——渗压计
  • Pikachu-Sql Inject-宽字节注入
  • 如何制作低代码开发的视频教程?
  • Flink学习地址
  • 05_23 种设计模式之《建造者模式》
  • 详细分析Spring Security OAuth2中的JwtAccessTokenConverter基本知识(附Demo)
  • python习题2
  • CVSS 4.0 学习笔记
  • 解决 GPTQ 模型导入后推理生成 Tokens 速度很慢的问题(从源码重新安装 Auto-GPTQ)
  • NDC美国药品编码目录数据库查询方法