#ifndef RESIZEUIHELPER_H #define RESIZEUIHELPER_H #include #include #include #include class ResizeUiHelper : public QObject, public QGraphicsItem { Q_OBJECT public: enum GripId { NoGrip = -1, TopLeft = 0, Top, TopRight, Right, BottomRight, Bottom, BottomLeft, Left }; ResizeUiHelper(QGraphicsItem *item, QObject *parent = 0); ResizeUiHelper(QWidget *widget, QObject *parent = 0); QRectF rect() const; void setResizeGripEnabled(GripId grip, bool enabled); bool resizeGripEnabled(GripId grip) const; void setAllResizeGripsEnabled(bool enabled); void setGripSize(QSizeF sz); QSizeF gripSize() const; virtual QRectF gripRect(GripId grip) const; virtual QCursor gripCursor(GripId grip) const; bool sceneEventFilter(QGraphicsItem* watched, QEvent* event); bool eventFilter(QObject *watched, QEvent * event); bool genericEventFilter(QEvent::Type eventType, QPointF eventPos); QRectF rectResize(QRectF originalRect, GripId activeGrip, QPointF originalPoint, QPointF newPoint); QRectF boundingRect() const; // dummy void paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget); // dummy void reset(); bool resizeEnabled() const; public slots: void setResizeEnabled(bool enabled); void setRect(const QRectF &rect); signals: void rectResized(const QRectF &rect); private: void setWatchedCursor(QCursor cursor); QGraphicsItem *m_item; QWidget *m_widget; bool m_isResizeEnabled; QVector m_gripsEnabled; QRectF m_rect; QSizeF m_gripSize; QPointF m_buttonDownPos; QRectF m_buttonDownRect; GripId m_activeResizeGrip; bool m_isResizeInProgress; }; #endif // RESIZEUIHELPER_H