QGraphicsItem接口

QGraphicsItem是Qt框架中图形视图框架(Graphics View Framework)的一个核心组件,它是用于表示2D图形元素的基类。QGraphicsItem提供了一系列的接口,以下是对这些接口的详细归纳:

一、基本属性与位置

  • QGraphicsItem(QGraphicsItem *parent = nullptr):构造函数,可以指定父项。
  • QRectF boundingRect() const:必须由子类实现的纯虚函数,返回项的边界矩形。
  • QPointF pos() const:返回项在其父项坐标系中的位置。
  • void setPos(const QPointF &pos):设置项在其父项坐标系中的位置。
  • QGraphicsItem *parentItem() const:返回项的父项。
  • QList<QGraphicsItem *> children() const:返回项的所有直接子项的列表。
  • void setZValue(qreal z):设置项的Z值,用于控制项的堆叠顺序。

二、渲染与外观

  • void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr):必须由子类实现的纯虚函数,用于自定义项的渲染逻辑。
  • QBrush foregroundBrush() const:返回项的前景色。
  • void setForegroundBrush(const QBrush &brush):设置项的前景色。
  • bool isInteractive() const:判断项是否响应鼠标事件。
  • void setInteractive(bool allowed):设置项是否响应鼠标事件。
  • bool isVisible() const:判断项是否可见。
  • void setVisible(bool visible):设置项是否可见。

三、交互事件处理

  • virtual void mousePressEvent(QGraphicsSceneMouseEvent *event):重写此函数以处理鼠标按下事件。
  • virtual void mouseMoveEvent(QGraphicsSceneMouseEvent *event):重写此函数以处理鼠标移动事件。
  • virtual void mouseReleaseEvent(QGraphicsSceneMouseEvent *event):重写此函数以处理鼠标释放事件。
  • virtual void mouseDoubleClickEvent(QGraphicsSceneMouseEvent *event):重写此函数以处理鼠标双击事件。
  • virtual void hoverMoveEvent(QGraphicsSceneHoverEvent *event):重写此函数以处理鼠标悬停移动事件。
  • virtual void keyPressEvent(QKeyEvent *event):重写此函数以处理键盘按下事件。
  • virtual void keyReleaseEvent(QKeyEvent *event):重写此函数以处理键盘释放事件。
  • virtual void mousePressEvent(QGraphicsSceneMouseEvent *event):重写此函数以处理鼠标按下事件。
  • void setCursor(const QCursor &cursor):设置项的光标形状。
  • void setToolTip(const QString &toolTip):设置项的提示信息。

四、碰撞检测与形状

  • virtual QPainterPath shape() const:返回项的形状路径,用于更精确的碰撞检测。
  • virtual bool contains(const QPointF &point) const:如果指定的点在项的边界矩形内,则返回true。
  • virtual bool collidesWithItem(const QGraphicsItem *other, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const:如果项与另一个项发生碰撞,则返回true。

五、焦点与选择

  • virtual void setSelected(bool selected):设置项是否被选中。
  • bool isSelected() const:返回项是否被选中。
  • virtual void setFocus(Qt::FocusReason focusReason = Qt::OtherFocusReason):设置项是否拥有键盘输入焦点。
  • bool hasFocus() const:返回项是否拥有键盘输入焦点。
  • void setScene(QGraphicsScene *scene):设置项所在的场景。
  • QGraphicsScene *scene() const:返回项所在的场景。

六、坐标转换与变换

  • QGraphicsItem::matrix():返回项的坐标转换矩阵,用于旋转、缩放等变换。
  • QPointF mapToItem(const QGraphicsItem *item, const QPointF &point) const:将点从当前项的坐标系映射到另一个项的坐标系。
  • QPointF mapFromItem(const QGraphicsItem *item, const QPointF &point) const:将点从另一个项的坐标系映射到当前项的坐标系。
  • void setRotation(qreal angle):设置项的旋转角度。
  • qreal rotation() const:返回项的旋转角度。
  • void setTransform(const QTransform &matrix, bool combine = false):设置项的变换矩阵。
  • QTransform transform() const:返回项的变换矩阵。

总的来说,QGraphicsItem提供了丰富的接口,用于创建和管理2D图形元素,支持各种交互事件和碰撞检测,是Qt图形视图框架中不可或缺的一部分。要创建自定义的QGraphicsItem,需要继承QGraphicsItem类,并实现boundingRect()和paint()两个纯虚函数。此外,还可以通过重写其他事件处理函数来实现特定的交互逻辑。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值