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()两个纯虚函数。此外,还可以通过重写其他事件处理函数来实现特定的交互逻辑。
2204

被折叠的 条评论
为什么被折叠?



