17 #ifndef QGSLAYOUTMOUSEHANDLES_H 18 #define QGSLAYOUTMOUSEHANDLES_H 23 #include <QGraphicsRectItem> 48 class GUI_EXPORT QgsLayoutMouseHandles:
public QObject,
public QGraphicsRectItem
94 void setLayout(
QgsLayout *layout ) { mLayout = layout; }
102 void paint( QPainter *painter,
const QStyleOptionGraphicsItem *option, QWidget *widget =
nullptr )
override;
105 QgsLayoutMouseHandles::MouseAction mouseActionForScenePos( QPointF sceneCoordPos );
108 bool isDragging()
const {
return mIsDragging; }
111 bool isResizing()
const {
return mIsResizing; }
113 bool shouldBlockEvent( QInputEvent *event )
const;
117 void mouseMoveEvent( QGraphicsSceneMouseEvent *event )
override;
118 void mouseReleaseEvent( QGraphicsSceneMouseEvent *event )
override;
119 void mousePressEvent( QGraphicsSceneMouseEvent *event )
override;
120 void mouseDoubleClickEvent( QGraphicsSceneMouseEvent *event )
override;
121 void hoverMoveEvent( QGraphicsSceneHoverEvent *event )
override;
122 void hoverLeaveEvent( QGraphicsSceneHoverEvent *event )
override;
127 void selectionChanged();
130 void selectedItemSizeChanged();
133 void selectedItemRotationChanged();
138 QPointer< QgsLayoutView > mView;
140 MouseAction mCurrentMouseMoveAction = NoAction;
142 QPointF mMouseMoveStartPos;
144 QPointF mLastMouseEventPos;
146 QPointF mBeginMouseEventPos;
148 QPointF mBeginHandlePos;
150 double mBeginHandleWidth = 0;
151 double mBeginHandleHeight = 0;
154 double mResizeMoveX = 0;
155 double mResizeMoveY = 0;
158 bool mIsDragging =
false;
160 bool mIsResizing =
false;
163 QGraphicsLineItem *mHorizontalSnapLine =
nullptr;
164 QGraphicsLineItem *mVerticalSnapLine =
nullptr;
166 QSizeF mCursorOffset;
169 QRectF selectionBounds()
const;
172 bool selectionRotation(
double &rotation )
const;
175 void updateHandles();
177 void drawHandles( QPainter *painter,
double rectHandlerSize );
179 void drawSelectedItemBounds( QPainter *painter );
184 double rectHandlerBorderTolerance();
187 Qt::CursorShape cursorForPosition( QPointF itemCoordPos );
190 MouseAction mouseActionForPosition( QPointF itemCoordPos );
193 void dragMouseMove( QPointF currentPosition,
bool lockMovement,
bool preventSnap );
196 QSizeF calcCursorEdgeOffset( QPointF cursorPos );
199 void resizeMouseMove( QPointF currentPosition,
bool lockAspect,
bool fromCenter );
202 void setViewportCursor( Qt::CursorShape cursor );
205 void resetStatusBar();
208 QPointF snapPoint( QPointF originalPoint, SnapGuideMode mode,
bool snapHorizontal =
true,
bool snapVertical =
true );
210 void hideAlignItems();
213 void collectItems(
const QList< QgsLayoutItem * > &items, QList< QgsLayoutItem * > &collected );
219 #endif // QGSLAYOUTMOUSEHANDLES_H Base class for graphical items within a QgsLayout.
A graphical widget to display and interact with QgsLayouts.
Base class for layouts, which can contain items such as maps, labels, scalebars, etc.