47 #define MIN_VIEW_SCALE 0.05
48 #define MAX_VIEW_SCALE 1000.0
51 : QGraphicsView( parent )
53 setResizeAnchor( QGraphicsView::AnchorViewCenter );
54 setMouseTracking(
true );
55 viewport()->setMouseTracking(
true );
61 viewport()->setStyleSheet( QStringLiteral(
"background-color:#d7d7d7;" ) );
68 viewport()->setGraphicsEffect( mPreviewEffect );
80 return qobject_cast<QgsLayout *>( scene() );
85 return qobject_cast<const QgsLayout *>( scene() );
99 mSnapMarker =
new QgsLayoutViewSnapMarker();
101 layout->addItem( mSnapMarker );
102 mHorizontalSnapLine = createSnapLine();
103 mHorizontalSnapLine->hide();
104 layout->addItem( mHorizontalSnapLine );
105 mVerticalSnapLine = createSnapLine();
106 mVerticalSnapLine->hide();
107 layout->addItem( mVerticalSnapLine );
108 mSectionLabel =
nullptr;
110 if ( mHorizontalRuler )
112 connect( &layout->
guides(), &QAbstractItemModel::dataChanged, mHorizontalRuler, [ = ] { mHorizontalRuler->update(); } );
113 connect( &layout->
guides(), &QAbstractItemModel::rowsInserted, mHorizontalRuler, [ = ] { mHorizontalRuler->update(); } );
114 connect( &layout->
guides(), &QAbstractItemModel::rowsRemoved, mHorizontalRuler, [ = ] { mHorizontalRuler->update(); } );
115 connect( &layout->
guides(), &QAbstractItemModel::modelReset, mHorizontalRuler, [ = ] { mHorizontalRuler->update(); } );
117 if ( mVerticalRuler )
119 connect( &layout->
guides(), &QAbstractItemModel::dataChanged, mVerticalRuler, [ = ] { mVerticalRuler->update(); } );
120 connect( &layout->
guides(), &QAbstractItemModel::rowsInserted, mVerticalRuler, [ = ] { mVerticalRuler->update(); } );
121 connect( &layout->
guides(), &QAbstractItemModel::rowsRemoved, mVerticalRuler, [ = ] { mVerticalRuler->update(); } );
122 connect( &layout->
guides(), &QAbstractItemModel::modelReset, mVerticalRuler, [ = ] { mVerticalRuler->update(); } );
147 if ( mHorizontalSnapLine )
148 mHorizontalSnapLine->hide();
149 if ( mVerticalSnapLine )
150 mVerticalSnapLine->hide();
162 if ( mTool && mTool ==
tool )
166 setCursor( Qt::ArrowCursor );
172 mPreviewEffect->setEnabled( enabled );
177 return mPreviewEffect->isEnabled();
182 mPreviewEffect->
setMode( mode );
187 return mPreviewEffect->
mode();
192 double currentScale = transform().m11();
193 scale *= currentScale;
195 setTransform( QTransform::fromScale( scale, scale ) );
207 setTransform( QTransform::fromScale( level, level ) );
211 double dpi = mScreenDpi;
213 if ( ( dpi < 60 ) || ( dpi > 1200 ) )
219 setTransform( QTransform::fromScale( mmLevel, mmLevel ) );
227 mHorizontalRuler = ruler;
231 connect( &layout->guides(), &QAbstractItemModel::dataChanged, ruler, [ = ] { mHorizontalRuler->update(); } );
232 connect( &layout->guides(), &QAbstractItemModel::rowsInserted, ruler, [ = ] { mHorizontalRuler->update(); } );
233 connect( &layout->guides(), &QAbstractItemModel::rowsRemoved, ruler, [ = ] { mHorizontalRuler->update(); } );
234 connect( &layout->guides(), &QAbstractItemModel::modelReset, ruler, [ = ] { mHorizontalRuler->update(); } );
241 mVerticalRuler = ruler;
245 connect( &layout->guides(), &QAbstractItemModel::dataChanged, ruler, [ = ] { mVerticalRuler->update(); } );
246 connect( &layout->guides(), &QAbstractItemModel::rowsInserted, ruler, [ = ] { mVerticalRuler->update(); } );
247 connect( &layout->guides(), &QAbstractItemModel::rowsRemoved, ruler, [ = ] { mVerticalRuler->update(); } );
248 connect( &layout->guides(), &QAbstractItemModel::modelReset, ruler, [ = ] { mVerticalRuler->update(); } );
255 mMenuProvider.reset( provider );
260 return mMenuProvider.get();
266 return QList< QgsLayoutItemPage *>();
269 QRect viewportRect( 0, 0, viewport()->width(), viewport()->height() );
270 QRectF visibleRect = mapToScene( viewportRect ).boundingRect();
277 return QList< int >();
280 QRect viewportRect( 0, 0, viewport()->width(), viewport()->height() );
281 QRectF visibleRect = mapToScene( viewportRect ).boundingRect();
324 QDomElement documentElement = doc.createElement( QStringLiteral(
"LayoutItemClipboard" ) );
328 QSet< QgsLayoutMultiFrame * > copiedMultiFrames;
335 const QList<QgsLayoutItem *> groupedItems = itemGroup->items();
338 groupedItem->writeXml( documentElement, doc, context );
341 else if (
QgsLayoutFrame *frame = qobject_cast<QgsLayoutFrame *>( item ) )
344 if ( frame->multiFrame() && !copiedMultiFrames.contains( frame->multiFrame() ) )
346 frame->multiFrame()->writeXml( documentElement, doc, context );
347 copiedMultiFrames.insert( frame->multiFrame() );
350 item->writeXml( documentElement, doc, context );
354 doc.appendChild( documentElement );
362 QDomNodeList itemsNodes = doc.elementsByTagName( QStringLiteral(
"LayoutItem" ) );
363 for (
int i = 0; i < itemsNodes.count(); ++i )
365 QDomNode itemNode = itemsNodes.at( i );
366 if ( itemNode.isElement() )
368 itemNode.toElement().removeAttribute( QStringLiteral(
"uuid" ) );
369 itemNode.toElement().removeAttribute( QStringLiteral(
"groupUuid" ) );
372 QDomNodeList multiFrameNodes = doc.elementsByTagName( QStringLiteral(
"LayoutMultiFrame" ) );
373 for (
int i = 0; i < multiFrameNodes.count(); ++i )
375 QDomNode multiFrameNode = multiFrameNodes.at( i );
376 if ( multiFrameNode.isElement() )
378 multiFrameNode.toElement().removeAttribute( QStringLiteral(
"uuid" ) );
379 QDomNodeList frameNodes = multiFrameNode.toElement().elementsByTagName( QStringLiteral(
"childFrame" ) );
380 for (
int j = 0; j < frameNodes.count(); ++j )
382 QDomNode itemNode = frameNodes.at( j );
383 if ( itemNode.isElement() )
385 itemNode.toElement().removeAttribute( QStringLiteral(
"uuid" ) );
391 QMimeData *mimeData =
new QMimeData;
392 mimeData->setData( QStringLiteral(
"text/xml" ), doc.toByteArray() );
393 QClipboard *clipboard = QApplication::clipboard();
394 clipboard->setMimeData( mimeData );
400 return QList< QgsLayoutItem * >();
402 QList< QgsLayoutItem * > pastedItems;
404 QClipboard *clipboard = QApplication::clipboard();
405 if ( doc.setContent( clipboard->mimeData()->data( QStringLiteral(
"text/xml" ) ) ) )
407 QDomElement docElem = doc.documentElement();
408 if ( docElem.tagName() == QLatin1String(
"LayoutItemClipboard" ) )
417 pt = mapToScene( mapFromGlobal( QCursor::pos() ) );
423 pt = mapToScene( viewport()->rect().center() );
441 return QList<QgsLayoutItem *>();
443 QList< QgsLayoutItem * > pastedItems;
445 QClipboard *clipboard = QApplication::clipboard();
446 if ( doc.setContent( clipboard->mimeData()->data( QStringLiteral(
"text/xml" ) ) ) )
448 QDomElement docElem = doc.documentElement();
449 if ( docElem.tagName() == QLatin1String(
"LayoutItemClipboard" ) )
464 QClipboard *clipboard = QApplication::clipboard();
465 if ( doc.setContent( clipboard->mimeData()->data( QStringLiteral(
"text/xml" ) ) ) )
467 QDomElement docElem = doc.documentElement();
468 if ( docElem.tagName() == QLatin1String(
"LayoutItemClipboard" ) )
477 double increment = 1.0;
478 if ( event->modifiers() & Qt::ShiftModifier )
483 else if ( event->modifiers() & Qt::AltModifier )
486 double viewScale = transform().m11();
489 increment = 1 / viewScale;
495 switch ( event->key() )
513 return QPointF( deltaX, deltaY );
518 mPaintingEnabled = enabled;
528 if ( !mSectionLabel )
530 mSectionLabel =
new QgsLayoutReportSectionLabel(
currentLayout(),
this );
532 mSectionLabel->setRect( 0, -200, 1000, 200 );
533 mSectionLabel->setZValue( -1 );
535 mSectionLabel->setLabel( label );
543 fitInView( scene()->sceneRect(), Qt::KeepAspectRatio );
554 QRect viewportRect( 0, 0, viewport()->width(), viewport()->height() );
555 QRectF visibleRect = mapToScene( viewportRect ).boundingRect();
557 double verticalCenter = ( visibleRect.top() + visibleRect.bottom() ) / 2.0;
562 const double tinyHeight = 0.01;
563 QRectF targetRect( scene()->sceneRect().left(),
564 verticalCenter - tinyHeight,
565 scene()->sceneRect().width(),
568 fitInView( targetRect, Qt::KeepAspectRatio );
602 const QList<QGraphicsItem *> itemList =
currentLayout()->items();
603 for ( QGraphicsItem *graphicsItem : itemList )
607 if ( item && !paperItem )
644 const QList<QGraphicsItem *> itemList =
currentLayout()->items();
645 for ( QGraphicsItem *graphicsItem : itemList )
649 if ( item && !paperItem )
652 if ( item->isSelected() || item->
isLocked() )
676 if ( !selectedItems.isEmpty() )
678 previousSelectedItem = selectedItems.at( 0 );
681 if ( !previousSelectedItem )
689 selectedItem = layout->
itemsModel()->findItemBelow( previousSelectedItem );
691 selectedItem = layout->
itemsModel()->findItemAbove( previousSelectedItem );
718 bool itemsRaised =
false;
741 bool itemsLowered =
false;
764 bool itemsRaised =
false;
787 bool itemsLowered =
false;
813 item->setLocked(
true );
833 const QList<QGraphicsItem *> itemList =
currentLayout()->items();
834 for ( QGraphicsItem *graphicItem : itemList )
908 QList< QgsLayoutItem * > ungroupedItems;
920 if ( !ungroupedItems.empty() )
922 for (
QgsLayoutItem *item : std::as_const( ungroupedItems ) )
936 mSnapMarker->setVisible(
false );
941 mTool->layoutPressEvent( me.get() );
942 event->setAccepted( me->isAccepted() );
945 if ( !mTool || !event->isAccepted() )
947 if ( event->button() == Qt::MiddleButton )
950 setTool( mMidMouseButtonPanTool );
953 else if ( event->button() == Qt::RightButton && mMenuProvider )
955 QMenu *menu = mMenuProvider->createContextMenu(
this,
currentLayout(), mapToScene( event->pos() ) );
958 menu->exec( event->globalPos() );
964 QGraphicsView::mousePressEvent( event );
977 mTool->layoutReleaseEvent( me.get() );
978 event->setAccepted( me->isAccepted() );
981 if ( !mTool || !event->isAccepted() )
982 QGraphicsView::mouseReleaseEvent( event );
990 mMouseCurrentXY =
event->pos();
992 QPointF cursorPos = mapToScene( mMouseCurrentXY );
998 me->snapPoint( mHorizontalSnapLine, mVerticalSnapLine, mTool->ignoredSnapItems() );
1003 if ( me->isSnapped() )
1005 cursorPos = me->snappedPoint();
1008 mSnapMarker->setPos( me->snappedPoint() );
1009 mSnapMarker->setVisible(
true );
1012 else if ( mSnapMarker )
1014 mSnapMarker->setVisible(
false );
1017 mTool->layoutMoveEvent( me.get() );
1018 event->setAccepted( me->isAccepted() );
1024 if ( !mTool || !event->isAccepted() )
1025 QGraphicsView::mouseMoveEvent( event );
1036 mTool->layoutDoubleClickEvent( me.get() );
1037 event->setAccepted( me->isAccepted() );
1040 if ( !mTool || !event->isAccepted() )
1041 QGraphicsView::mouseDoubleClickEvent( event );
1051 mTool->wheelEvent( event );
1054 if ( !mTool || !event->isAccepted() )
1068 mTool->keyPressEvent( event );
1071 if ( mTool && event->isAccepted() )
1074 if ( event->key() == Qt::Key_Space && ! event->isAutoRepeat() )
1076 if ( !( event->modifiers() & Qt::ControlModifier ) )
1088 else if ( event->key() == Qt::Key_Left
1089 || event->key() == Qt::Key_Right
1090 || event->key() == Qt::Key_Up
1091 || event->key() == Qt::Key_Down )
1102 item->attemptMoveBy( delta.x(), delta.y() );
1117 mTool->keyReleaseEvent( event );
1120 if ( !mTool || !event->isAccepted() )
1121 QGraphicsView::keyReleaseEvent( event );
1126 QGraphicsView::resizeEvent( event );
1133 QGraphicsView::scrollContentsBy( dx, dy );
1147 if ( mPaintingEnabled )
1149 QGraphicsView::paintEvent( event );
1160 QGraphicsView::showEvent( event );
1162 updateDevicePixelFromScreen();
1164 if ( window()->windowHandle() )
1166 connect( window()->windowHandle(), &QWindow::screenChanged,
this, [ = ]( QScreen * )
1168 disconnect( mScreenDpiChangedConnection );
1169 mScreenDpiChangedConnection = connect( window()->windowHandle()->screen(), &QScreen::physicalDotsPerInchChanged,
this, &QgsLayoutView::updateDevicePixelFromScreen );
1170 updateDevicePixelFromScreen();
1173 mScreenDpiChangedConnection = connect( window()->windowHandle()->screen(), &QScreen::physicalDotsPerInchChanged,
this, &QgsLayoutView::updateDevicePixelFromScreen );
1177 void QgsLayoutView::invalidateCachedRenders()
1183 QList< QgsLayoutItem *> items;
1188 item->invalidateCache();
1192 void QgsLayoutView::updateDevicePixelFromScreen()
1194 if ( window()->windowHandle() )
1195 mScreenDpi = window()->windowHandle()->screen()->physicalDotsPerInch();
1200 if ( mHorizontalRuler )
1204 if ( mVerticalRuler )
1210 QRect viewportRect( 0, 0, viewport()->width(), viewport()->height() );
1211 QRectF visibleRect = mapToScene( viewportRect ).boundingRect();
1212 QPointF centerVisible = visibleRect.center();
1217 if ( newPage != mCurrentPage )
1219 mCurrentPage = newPage;
1230 void QgsLayoutView::wheelZoom( QWheelEvent *event )
1234 double zoomFactor = settings.
value( QStringLiteral(
"qgis/zoom_factor" ), 2 ).toDouble();
1237 zoomFactor = 1.0 + ( zoomFactor - 1.0 ) / 120.0 * std::fabs( event->angleDelta().y() );
1239 if ( event->modifiers() & Qt::ControlModifier )
1242 zoomFactor = 1.0 + ( zoomFactor - 1.0 ) / 20.0;
1246 bool zoomIn =
event->angleDelta().y() > 0;
1247 double scaleFactor = (
zoomIn ? 1 / zoomFactor : zoomFactor );
1250 QRect viewportRect( 0, 0, viewport()->width(), viewport()->height() );
1254 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
1255 QPointF scenePoint = mapToScene( event->pos() );
1257 QPointF scenePoint = mapToScene( event->position().x(), event->position().y() );
1262 QgsPointXY newCenter( scenePoint.x() + ( ( oldCenter.x() - scenePoint.x() ) * scaleFactor ),
1263 scenePoint.y() + ( ( oldCenter.y() - scenePoint.y() ) * scaleFactor ) );
1264 centerOn( newCenter.x(), newCenter.y() );
1277 QGraphicsLineItem *QgsLayoutView::createSnapLine()
const
1279 std::unique_ptr< QGraphicsLineItem> item(
new QGraphicsLineItem(
nullptr ) );
1280 QPen pen = QPen( QColor( Qt::blue ) );
1281 pen.setStyle( Qt::DotLine );
1282 pen.setWidthF( 0.0 );
1283 item->setPen( pen );
1285 return item.release();
1293 QgsLayoutViewSnapMarker::QgsLayoutViewSnapMarker()
1294 : QGraphicsRectItem( QRectF( 0, 0, 0, 0 ) )
1297 QFontMetrics fm( f );
1298 mSize = fm.horizontalAdvance(
'X' );
1299 setPen( QPen( Qt::transparent, mSize ) );
1301 setFlags( flags() | QGraphicsItem::ItemIgnoresTransformations );
1305 void QgsLayoutViewSnapMarker::paint( QPainter *p,
const QStyleOptionGraphicsItem *, QWidget * )
1307 QPen pen( QColor( 255, 0, 0 ) );
1310 p->setBrush( Qt::NoBrush );
1312 double halfSize = mSize / 2.0;
1313 p->drawLine( QLineF( -halfSize, -halfSize, halfSize, halfSize ) );
1314 p->drawLine( QLineF( -halfSize, halfSize, halfSize, -halfSize ) );
Alignment
Alignment options.
static void alignItems(QgsLayout *layout, const QList< QgsLayoutItem * > &items, Alignment alignment)
Aligns a set of items from a layout in place.
static void distributeItems(QgsLayout *layout, const QList< QgsLayoutItem * > &items, Distribution distribution)
Distributes a set of items from a layout in place.
static void resizeItems(QgsLayout *layout, const QList< QgsLayoutItem * > &items, Resize resize)
Resizes a set of items from a layout in place.
Distribution
Distribution options.
Base class for frame items, which form a layout multiframe item.
A container for grouping several QgsLayoutItems.
Item representing the paper in a layout.
@ LayoutGroup
Grouped item.
Base class for graphical items within a QgsLayout.
@ UndoIncrementalMove
Layout item incremental movement, e.g. as a result of a keypress.
virtual void setSelected(bool selected)
Sets whether the item should be selected.
bool isLocked() const
Returns true if the item is locked, and cannot be interacted with using the mouse.
void setLocked(bool locked)
Sets whether the item is locked, preventing mouse interactions with the item.
double length() const
Returns the length of the measurement.
QList< int > visiblePageNumbers(const QRectF ®ion) const
Returns a list of the page numbers which are visible within the specified region (in layout coordinat...
void changed()
Emitted when pages are added or removed from the collection.
int pageNumberForPoint(QPointF point) const
Returns the page number corresponding to a point in the layout (in layout units).
QList< QgsLayoutItemPage * > visiblePages(const QRectF ®ion) const
Returns a list of the pages which are visible within the specified region (in layout coordinates).
A custom ruler widget for use with QgsLayoutView, displaying the current zoom and position of the vis...
void setSceneTransform(const QTransform &transform)
Sets the current scene transform.
void setLayoutView(QgsLayoutView *view)
Sets the current layout view to synchronize the ruler with.
void endCommand()
Saves final state of an object and pushes the active command to the undo history.
void beginMacro(const QString &commandText)
Starts a macro command, with the given descriptive commandText.
void beginCommand(QgsLayoutUndoObjectInterface *object, const QString &commandText, int id=0)
Begins a new undo command for the specified object.
void endMacro()
Ends a macro command.
A QgsLayoutViewMouseEvent is the result of a user interaction with the mouse on a QgsLayoutView.
void alignSelectedItems(QgsLayoutAligner::Alignment alignment)
Aligns all selected items using the specified alignment.
void zoomFull()
Zooms the view to the full extent of the layout.
void selectNextItemBelow()
Selects the next item below the existing selection, by item z order.
QgsLayoutView(QWidget *parent=nullptr)
Constructor for QgsLayoutView.
void moveSelectedItemsToBottom()
Lowers the selected items to the bottom of the z-order.
void pushStatusMessage(const QString &message)
Pushes a new status bar message to the view.
void viewChanged()
Updates associated rulers and other widgets after view extent or zoom has changed.
void cursorPosChanged(QPointF layoutPoint)
Emitted when the mouse cursor coordinates change within the view.
@ PasteModeCenter
Paste items in center of view.
@ PasteModeInPlace
Paste items in place.
@ PasteModeCursor
Paste items at cursor position.
void unlockAllItems()
Unlocks all locked items in the layout.
void deleteSelectedItems()
Deletes all selected items.
void mouseMoveEvent(QMouseEvent *event) override
QgsLayout * currentLayout
void setMenuProvider(QgsLayoutViewMenuProvider *provider)
Sets a provider for context menus.
void dragEnterEvent(QDragEnterEvent *e) override
void resizeEvent(QResizeEvent *event) override
void lowerSelectedItems()
Lowers the selected items down the z-order.
void setPaintingEnabled(bool enabled)
Sets whether widget repainting should be allowed for the view.
void mouseReleaseEvent(QMouseEvent *event) override
QgsPreviewEffect::PreviewMode previewMode() const
Returns the preview mode which may be used to modify the view's appearance.
void lockSelectedItems()
Locks any selected items, preventing them from being interacted with by mouse interactions.
void setSectionLabel(const QString &label)
Sets a section label, to display above the first page shown in the view.
void resizeSelectedItems(QgsLayoutAligner::Resize resize)
Resizes all selected items using the specified resize mode.
void setTool(QgsLayoutViewTool *tool)
Sets the tool currently being used in the view.
void zoomLevelChanged()
Emitted whenever the zoom level of the view is changed.
void deleteItems(const QList< QgsLayoutItem * > &items)
Delete the specified items.
void selectAll()
Selects all items in the view.
QList< QgsLayoutItem * > pasteItems(PasteMode mode)
Pastes items from clipboard, using the specified mode.
void willBeDeleted()
Emitted in the destructor when the view is about to be deleted, but is still in a perfectly valid sta...
QPointF deltaForKeyEvent(QKeyEvent *event)
Returns the delta (in layout coordinates) by which to move items for the given key event.
void setHorizontalRuler(QgsLayoutRuler *ruler)
Sets a horizontal ruler to synchronize with the view state.
~QgsLayoutView() override
void setPreviewMode(QgsPreviewEffect::PreviewMode mode)
Sets the preview mode which should be used to modify the view's appearance.
void deselectAll()
Deselects all items in the view.
void keyPressEvent(QKeyEvent *event) override
void zoomWidth()
Zooms the view to the full width of the layout.
void raiseSelectedItems()
Raises the selected items up the z-order.
void showEvent(QShowEvent *event) override
void statusMessage(const QString &message)
Emitted when the view has a message for display in a parent window's status bar.
void itemFocused(QgsLayoutItem *item)
Emitted when an item is "focused" in the view, i.e.
void selectNextItemAbove()
Selects the next item above the existing selection, by item z order.
void moveSelectedItemsToTop()
Raises the selected items to the top of the z-order.
bool hasItemsInClipboard() const
Returns true if the current clipboard contains layout items.
void zoomActual()
Zooms to the actual size of the layout.
void setPreviewModeEnabled(bool enabled)
Sets whether a preview effect should be used to alter the view's appearance.
void layoutSet(QgsLayout *layout)
Emitted when a layout is set for the view.
void setCurrentLayout(QgsLayout *layout)
Sets the current layout to edit in the view.
void wheelEvent(QWheelEvent *event) override
ClipboardOperation
Clipboard operations.
void ungroupSelectedItems()
Ungroups all selected items.
void emitZoomLevelChanged()
Emits the zoomLevelChanged() signal.
bool previewModeEnabled() const
Returns true if a preview effect is being used to alter the view's appearance.
void zoomOut()
Zooms out of the view by a preset amount.
void setVerticalRuler(QgsLayoutRuler *ruler)
Sets a vertical ruler to synchronize with the view state.
QList< QgsLayoutItemPage * > visiblePages() const
Returns a list of page items which are currently visible in the view.
void copyItems(const QList< QgsLayoutItem * > &items, ClipboardOperation operation)
Cuts or copies the a list of items, respecting the specified operation.
void setZoomLevel(double level)
Sets the zoom level for the view, where a zoom level of 1.0 corresponds to 100%.
void distributeSelectedItems(QgsLayoutAligner::Distribution distribution)
Distributes all selected items using the specified distribution.
void unsetTool(QgsLayoutViewTool *tool)
Unsets the current view tool, if it matches the specified tool.
void invertSelection()
Inverts the current selection, selecting deselected items and deselecting and selected items.
void toolSet(QgsLayoutViewTool *tool)
Emitted when the current tool is changed.
void mouseDoubleClickEvent(QMouseEvent *event) override
void scaleSafe(double scale)
Scales the view in a safe way, by limiting the acceptable range of the scale applied.
void pageChanged(int page)
Emitted when the page visible in the view is changed.
void scrollContentsBy(int dx, int dy) override
void copySelectedItems(ClipboardOperation operation)
Cuts or copies the selected items, respecting the specified operation.
void zoomIn()
Zooms in to the view by a preset amount.
void paintEvent(QPaintEvent *event) override
void keyReleaseEvent(QKeyEvent *event) override
QgsLayoutViewMenuProvider * menuProvider() const
Returns the provider for context menus.
QList< int > visiblePageNumbers() const
Returns a list of page numbers for pages which are currently visible in the view.
void groupSelectedItems()
Groups all selected items.
void mousePressEvent(QMouseEvent *event) override
Base class for layouts, which can contain items such as maps, labels, scalebars, etc.
QgsLayoutModel * itemsModel()
Returns the items model attached to the layout.
QgsLayoutPageCollection * pageCollection()
Returns a pointer to the layout's page collection, which stores and manages page items in the layout.
void layoutItems(QList< T * > &itemList) const
Returns a list of layout items of a specific type.
QgsLayoutGuideCollection & guides()
Returns a reference to the layout's guide collection, which manages page snap guides.
QList< QgsLayoutItem * > ungroupItems(QgsLayoutItemGroup *group)
Ungroups items by removing them from an item group and removing the group from the layout.
bool moveItemToTop(QgsLayoutItem *item, bool deferUpdate=false)
Raises an item up to the top of the z-order.
bool moveItemToBottom(QgsLayoutItem *item, bool deferUpdate=false)
Lowers an item down to the bottom of the z-order.
QgsLayoutItemGroup * groupItems(const QList< QgsLayoutItem * > &items)
Creates a new group from a list of layout items and adds the group to the layout.
QList< QgsLayoutItem * > addItemsFromXml(const QDomElement &parentElement, const QDomDocument &document, const QgsReadWriteContext &context, QPointF *position=nullptr, bool pasteInPlace=false)
Add items from an XML representation to the layout.
bool lowerItem(QgsLayoutItem *item, bool deferUpdate=false)
Lowers an item down the z-order.
bool raiseItem(QgsLayoutItem *item, bool deferUpdate=false)
Raises an item up the z-order.
QList< QgsLayoutItem * > selectedLayoutItems(bool includeLockedItems=true)
Returns list of selected layout items.
void selectedItemChanged(QgsLayoutItem *selected)
Emitted whenever the selected item changes.
void deselectAll()
Clears any selected items in the layout.
void setSelectedItem(QgsLayoutItem *item)
Clears any selected items and sets item as the current selection.
void removeLayoutItem(QgsLayoutItem *item)
Removes an item from the layout.
QgsLayoutMeasurement convertFromLayoutUnits(double length, QgsUnitTypes::LayoutUnit unit) const
Converts a length measurement from the layout's native units to a specified target unit.
void updateZValues(bool addUndoCommands=true)
Resets the z-values of items based on their position in the internal z order list.
@ ZSmartGuide
Z-value for smart (item bounds based) guides.
@ ZSnapIndicator
Z-value for snapping indicator.
QgsProject * project() const
The project associated with the layout.
QgsLayoutUndoStack * undoStack()
Returns a pointer to the layout's undo stack, which manages undo/redo states for the layout and it's ...
A class to represent a 2D point.
A graphics effect which can be applied to a widget to simulate various printing and color blindness m...
void setMode(PreviewMode mode)
Sets the mode for the preview effect, which controls how the effect modifies a widgets appearance.
PreviewMode mode() const
Returns the mode used for the preview effect.
void setDirty(bool b=true)
Flag the project as dirty (modified).
The class is used as a container of context for various read/write operations on other objects.
A rectangle specified with double values.
QgsPointXY center() const SIP_HOLDGIL
Returns the center point of the rectangle.
This class is a composition of two QSettings instances:
QVariant value(const QString &key, const QVariant &defaultValue=QVariant(), Section section=NoSection) const
Returns the value for setting key.
@ LayoutMillimeters
Millimeters.
void selectNextByZOrder(QgsLayout *layout, bool above)