自定义 QGraphicsItem

简述

QGraphicsItem 是场景中 item 的基类。图形视图提供了一些典型形状的标准 item,例如:矩形 ( QGraphicsRectItem )、椭圆 ( QGraphicsEllipseItem ) 、文本项 ( QGraphicsTextItem )。当这些不满足需求时(例如:在一些复杂的工作流场景中),往往需要自定义,通常的做法就是继承 QGraphicsItem。

| 版权声明:一去、二三里,未经博主允许不得转载。

自定义 QGraphicsItem

要实现自定义 item,需要覆盖 QGraphicsItem 的两个纯虚函数:

  • void paint()
    • 以本地坐标绘制 item 的内容
  • QRectF boundingRect()
    • 将 item 的外边界作为矩形返回
    • 由 QGraphicsView 调用以确定什么区域需要重绘

除此之外,可能还需要附加其他需求,例如:

  • QPainterPath shape() - item 的形状
    • 由 contains() 和 collidesWithPath() 用于碰撞检测
    • 如果未实现,则默认为 boundingRect()
  • 使用信号/槽、属性机制:继承 QObject 和 QGraphicsItem(或直接继承 QGraphicsObject)
  • 处理鼠标事件:重新实现 mouse***Event()
  • 处理键盘事件:重新实现 key***Event()
  • 处理拖放事件:重新实现 drag***Event()、dropEvent()
    ……

©️2020 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客 返回首页
实付39.90元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值