QGraphicsItem类


QGraphicsItem(图形项)类是 QGraphicsScene中所有图形项的基类。

Header:#include <QGraphicsItem>
CMake:find_package(Qt6 REQUIRED COMPONENTS Widgets)
target_link_libraries(mytarget PRIVATE Qt6::Widgets)
qmake:QT += widgets
Inherited By:

QAbstractGraphicsShapeItemQGraphicsItemGroupQGraphicsLineItemQGraphicsObject, and QGraphicsPixmapItem


详细描述>>>


【公有类型】

enumCacheMode { NoCache, ItemCoordinateCache, DeviceCoordinateCache }
enumGraphicsItemChange { ItemEnabledChange, ItemEnabledHasChanged, ItemPositionChange, ItemPositionHasChanged, ItemTransformChange, …, ItemScenePositionHasChanged }
enumGraphicsItemFlag { ItemIsMovable, ItemIsSelectable, ItemIsFocusable, ItemClipsToShape, ItemClipsChildrenToShape, …, ItemContainsChildrenInShape }
flagsGraphicsItemFlags
enumPanelModality { NonModal, PanelModal, SceneModal }
enumanonymous { Type, UserType }

【公有函数】

QGraphicsItem(QGraphicsItem *parent = nullptr)
virtual~QGraphicsItem()
boolacceptDrops() const
boolacceptHoverEvents() const
boolacceptTouchEvents() const
Qt::MouseButtonsacceptedMouseButtons() const
virtual voidadvance(int phase)
virtual QRectFboundingRect() const = 0
QRegionboundingRegion(const QTransform &itemToDeviceTransform) const
qrealboundingRegionGranularity() const
QGraphicsItem::CacheModecacheMode() const
QList<QGraphicsItem *>childItems() const
QRectFchildrenBoundingRect() const
voidclearFocus()
QPainterPathclipPath() const
virtual boolcollidesWithItem(const QGraphicsItem *other, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
virtual boolcollidesWithPath(const QPainterPath &path, Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
QList<QGraphicsItem *>collidingItems(Qt::ItemSelectionMode mode = Qt::IntersectsItemShape) const
QGraphicsItem *commonAncestorItem(const QGraphicsItem *other) const
virtual boolcontains(const QPointF &point) const
QCursorcursor() const
QVariantdata(int key) const
QTransformdeviceTransform(const QTransform &viewportTransform) const
qrealeffectiveOpacity() const
voidensureVisible(const QRectF &rect = QRectF(), int xmargin = 50, int ymargin = 50)
voidensureVisible(qreal x, qreal y, qreal w, qreal h, int xmargin = 50, int ymargin = 50)
boolfiltersChildEvents() const
QGraphicsItem::GraphicsItemFlagsflags() const
QGraphicsItem *focusItem() const
QGraphicsItem *focusProxy() const
voidgrabKeyboard()
voidgrabMouse()
QGraphicsEffect *graphicsEffect() const
QGraphicsItemGroup *group() const
boolhasCursor() const
boolhasFocus() const
voidhide()
Qt::InputMethodHintsinputMethodHints() const
voidinstallSceneEventFilter(QGraphicsItem *filterItem)
boolisActive() const
boolisAncestorOf(const QGraphicsItem *child) const
boolisBlockedByModalPanel(QGraphicsItem **blockingPanel = nullptr) const
boolisClipped() const
boolisEnabled() const
boolisObscured(const QRectF &rect = QRectF()) const
boolisObscured(qreal x, qreal y, qreal w, qreal h) const
virtual boolisObscuredBy(const QGraphicsItem *item) const
boolisPanel() const
boolisSelected() const
boolisUnderMouse() const
boolisVisible() const
boolisVisibleTo(const QGraphicsItem *parent) const
boolisWidget() const
boolisWindow() const
QTransformitemTransform(const QGraphicsItem *other, bool *ok = nullptr) const
QPointFmapFromItem(const QGraphicsItem *item, const QPointF &point) const
QPolygonFmapFromItem(const QGraphicsItem *item, const QRectF &rect) const
QPolygonFmapFromItem(const QGraphicsItem *item, const QPolygonF &polygon) const
QPainterPathmapFromItem(const QGraphicsItem *item, const QPainterPath &path) const
QPointFmapFromItem(const QGraphicsItem *item, qreal x, qreal y) const
QPolygonFmapFromItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
QPointFmapFromParent(const QPointF &point) const
QPolygonFmapFromParent(const QRectF &rect) const
QPolygonFmapFromParent(const QPolygonF &polygon) const
QPainterPathmapFromParent(const QPainterPath &path) const
QPointFmapFromParent(qreal x, qreal y) const
QPolygonFmapFromParent(qreal x, qreal y, qreal w, qreal h) const
QPointFmapFromScene(const QPointF &point) const
QPolygonFmapFromScene(const QRectF &rect) const
QPolygonFmapFromScene(const QPolygonF &polygon) const
QPainterPathmapFromScene(const QPainterPath &path) const
QPointFmapFromScene(qreal x, qreal y) const
QPolygonFmapFromScene(qreal x, qreal y, qreal w, qreal h) const
QRectFmapRectFromItem(const QGraphicsItem *item, const QRectF &rect) const
QRectFmapRectFromItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
QRectFmapRectFromParent(const QRectF &rect) const
QRectFmapRectFromParent(qreal x, qreal y, qreal w, qreal h) const
QRectFmapRectFromScene(const QRectF &rect) const
QRectFmapRectFromScene(qreal x, qreal y, qreal w, qreal h) const
QRectFmapRectToItem(const QGraphicsItem *item, const QRectF &rect) const
QRectFmapRectToItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
QRectFmapRectToParent(const QRectF &rect) const
QRectFmapRectToParent(qreal x, qreal y, qreal w, qreal h) const
QRectFmapRectToScene(const QRectF &rect) const
QRectFmapRectToScene(qreal x, qreal y, qreal w, qreal h) const
QPointFmapToItem(const QGraphicsItem *item, const QPointF &point) const
QPolygonFmapToItem(const QGraphicsItem *item, const QRectF &rect) const
QPolygonFmapToItem(const QGraphicsItem *item, const QPolygonF &polygon) const
QPainterPathmapToItem(const QGraphicsItem *item, const QPainterPath &path) const
QPointFmapToItem(const QGraphicsItem *item, qreal x, qreal y) const
QPolygonFmapToItem(const QGraphicsItem *item, qreal x, qreal y, qreal w, qreal h) const
QPointFmapToParent(const QPointF &point) const
QPolygonFmapToParent(const QRectF &rect) const
QPolygonFmapToParent(const QPolygonF &polygon) const
QPainterPathmapToParent(const QPainterPath &path) const
QPointFmapToParent(qreal x, qreal y) const
QPolygonFmapToParent(qreal x, qreal y, qreal w, qreal h) const
QPointFmapToScene(const QPointF &point) const
QPolygonFmapToScene(const QRectF &rect) const
QPolygonFmapToScene(const QPolygonF &polygon) const
QPainterPathmapToScene(const QPainterPath &path) const
QPointFmapToScene(qreal x, qreal y) const
QPolygonFmapToScene(qreal x, qreal y, qreal w, qreal h) const
voidmoveBy(qreal dx, qreal dy)
qrealopacity() const
virtual QPainterPathopaqueArea() const
virtual voidpaint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = nullptr) = 0
QGraphicsItem *panel() const
QGraphicsItem::PanelModalitypanelModality() const
QGraphicsItem *parentItem() const
QGraphicsObject *parentObject() const
QGraphicsWidget *parentWidget() const
QPointFpos() const
voidremoveSceneEventFilter(QGraphicsItem *filterItem)
voidresetTransform()
qrealrotation() const
qrealscale() const
QGraphicsScene *scene() const
QRectFsceneBoundingRect() const
QPointFscenePos() const
QTransformsceneTransform() const
voidscroll(qreal dx, qreal dy, const QRectF &rect = QRectF())
voidsetAcceptDrops(bool on)
voidsetAcceptHoverEvents(bool enabled)
voidsetAcceptTouchEvents(bool enabled)
voidsetAcceptedMouseButtons(Qt::MouseButtons buttons)
voidsetActive(bool active)
voidsetBoundingRegionGranularity(qreal granularity)
voidsetCacheMode(QGraphicsItem::CacheMode mode, const QSize &logicalCacheSize = QSize())
voidsetCursor(const QCursor &cursor)
voidsetData(int key, const QVariant &value)
voidsetEnabled(bool enabled)
voidsetFiltersChildEvents(bool enabled)
voidsetFlag(QGraphicsItem::GraphicsItemFlag flag, bool enabled = true)
voidsetFlags(QGraphicsItem::GraphicsItemFlags flags)
voidsetFocus(Qt::FocusReason focusReason = Qt::OtherFocusReason)
voidsetFocusProxy(QGraphicsItem *item)
voidsetGraphicsEffect(QGraphicsEffect *effect)
voidsetGroup(QGraphicsItemGroup *group)
voidsetInputMethodHints(Qt::InputMethodHints hints)
voidsetOpacity(qreal opacity)
voidsetPanelModality(QGraphicsItem::PanelModality panelModality)
voidsetParentItem(QGraphicsItem *newParent)
voidsetPos(const QPointF &pos)
voidsetPos(qreal x, qreal y)
voidsetRotation(qreal angle)
voidsetScale(qreal factor)
voidsetSelected(bool selected)
voidsetToolTip(const QString &toolTip)
voidsetTransform(const QTransform &matrix, bool combine = false)
voidsetTransformOriginPoint(const QPointF &origin)
voidsetTransformOriginPoint(qreal x, qreal y)
voidsetTransformations(const QList<QGraphicsTransform *> &transformations)
voidsetVisible(bool visible)
voidsetX(qreal x)
voidsetY(qreal y)
voidsetZValue(qreal z)
virtual QPainterPathshape() const
voidshow()
voidstackBefore(const QGraphicsItem *sibling)
QGraphicsObject *toGraphicsObject()
const QGraphicsObject *toGraphicsObject() const
QStringtoolTip() const
QGraphicsItem *topLevelItem() const
QGraphicsWidget *topLevelWidget() const
QTransformtransform() const
QPointFtransformOriginPoint() const
QList<QGraphicsTransform *>transformations() const
virtual inttype() const
voidungrabKeyboard()
voidungrabMouse()
voidunsetCursor()
voidupdate(const QRectF &rect = QRectF())
voidupdate(qreal x, qreal y, qreal width, qreal height)
QGraphicsWidget *window() const
qrealx() const
qrealy() const
qrealzValue() const

【保护函数】

virtual voidcontextMenuEvent(QGraphicsSceneContextMenuEvent *event)
virtual voiddragEnterEvent(QGraphicsSceneDragDropEvent *event)
virtual voiddragLeaveEvent(QGraphicsSceneDragDropEvent *event)
virtual voiddragMoveEvent(QGraphicsSceneDragDropEvent *event)
virtual voiddropEvent(QGraphicsSceneDragDropEvent *event)
virtual voidfocusInEvent(QFocusEvent *event)
virtual voidfocusOutEvent(QFocusEvent *event)
virtual voidhoverEnterEvent(QGraphicsSceneHoverEvent *event)
virtual voidhoverLeaveEvent(QGraphicsSceneHoverEvent *event)
virtual voidhoverMoveEvent(QGraphicsSceneHoverEvent *event)
virtual voidinputMethodEvent(QInputMethodEvent *event)
virtual QVariantinputMethodQuery(Qt::InputMethodQuery query) const
virtual QVariantitemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value)
virtual voidkeyPressEvent(QKeyEvent *event)
virtual voidkeyReleaseEvent(QKeyEvent *event)
virtual voidmouseDoubleClickEvent(QGraphicsSceneMouseEvent *event)
virtual voidmouseMoveEvent(QGraphicsSceneMouseEvent *event)
virtual voidmousePressEvent(QGraphicsSceneMouseEvent *event)
virtual voidmouseReleaseEvent(QGraphicsSceneMouseEvent *event)
voidprepareGeometryChange()
virtual boolsceneEvent(QEvent *event)
virtual boolsceneEventFilter(QGraphicsItem *watched, QEvent *event)
voidupdateMicroFocus()
virtual voidwheelEvent(QGraphicsSceneWheelEvent *event)
Tqgraphicsitem_cast(QGraphicsItem *item)

<<< 返回根页面

  • 15
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以通过继承QGraphicsItem来实现按下左键生成一个矩形跟着鼠标沿x轴移动的功能。具体实现步骤如下: 1. 定义一个MyRect,继承QGraphicsItem。 2. 在MyRect中重写boundingRect()和paint()函数,分别用于绘制矩形和获取矩形的边界矩形。 3. 在MyRect中重写mousePressEvent()和mouseReleaseEvent()函数,分别处理鼠标按下和松开事件,实现生成矩形并跟随鼠标移动的功能。 下面是完整的代码实现: ```cpp #include <QApplication> #include <QGraphicsView> #include <QGraphicsScene> #include <QGraphicsItem> #include <QMouseEvent> #include <QPainter> class MyRect : public QGraphicsItem { public: MyRect(QGraphicsItem* parent = nullptr) : QGraphicsItem(parent) , m_rect(0, 0, 0, 0) { setAcceptHoverEvents(true); } QRectF boundingRect() const override { return m_rect; } void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) override { painter->drawRect(m_rect); } protected: void mousePressEvent(QGraphicsSceneMouseEvent* event) override { if (event->button() == Qt::LeftButton) { m_rect.setTopLeft(event->pos()); m_rect.setBottomRight(event->pos()); update(); } } void mouseMoveEvent(QGraphicsSceneMouseEvent* event) override { if (event->buttons() & Qt::LeftButton) { m_rect.setBottomRight(event->pos()); update(); } } void mouseReleaseEvent(QGraphicsSceneMouseEvent* event) override { if (event->button() == Qt::LeftButton) { m_rect.setBottomRight(event->pos()); update(); } } private: QRectF m_rect; }; int main(int argc, char* argv[]) { QApplication a(argc, argv); QGraphicsScene scene; scene.setSceneRect(0, 0, 800, 600); MyRect* rect = new MyRect; scene.addItem(rect); QGraphicsView view(&scene); view.setRenderHint(QPainter::Antialiasing); view.show(); return a.exec(); } ``` 在这段代码中,我们定义了一个MyRect,继承了QGraphicsItem,并重写了boundingRect()、paint()、mousePressEvent()、mouseMoveEvent()和mouseReleaseEvent()函数。其中,boundingRect()用于获取矩形的边界矩形,paint()用于绘制矩形,mousePressEvent()、mouseMoveEvent()和mouseReleaseEvent()用于处理鼠标事件。 在mousePressEvent()函数中,我们检测到鼠标左键按下事件后,记录下矩形的左上角坐标,并将矩形的右下角坐标也设置为当前位置,然后调用update()函数通知系统重新绘制场景。 在mouseMoveEvent()函数中,我们检测到鼠标左键移动事件后,更新矩形的右下角坐标,并调用update()函数通知系统重新绘制场景。 在mouseReleaseEvent()函数中,我们检测到鼠标左键松开事件后,更新矩形的右下角坐标,并调用update()函数通知系统重新绘制场景。 最后,在main函数中,我们创建了一个QGraphicsScene对象和一个MyRect对象,并将MyRect对象添加到场景中。然后创建了一个QGraphicsView对象,并将其显示出来。这样,我们就可以在图形界面上按下左键生成一个矩形,并跟着鼠标沿x轴移动,松开鼠标后矩形消失了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值