一、概述
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
觉得有帮助的话,打赏一下呗。。