46#include "moc_qgslayoutview.cpp"
48using namespace Qt::StringLiterals;
50#define MIN_VIEW_SCALE 0.05
51#define MAX_VIEW_SCALE 1000.0
54 : QGraphicsView( parent )
56 setResizeAnchor( QGraphicsView::AnchorViewCenter );
57 setMouseTracking(
true );
58 viewport()->setMouseTracking(
true );
64 viewport()->setStyleSheet( u
"background-color:#d7d7d7;"_s );
71 viewport()->setGraphicsEffect( mPreviewEffect );
85 return qobject_cast<QgsLayout *>( scene() );
90 return qobject_cast<const QgsLayout *>( scene() );
104 mSnapMarker =
new QgsLayoutViewSnapMarker();
106 layout->addItem( mSnapMarker );
107 mHorizontalSnapLine = createSnapLine();
108 mHorizontalSnapLine->hide();
109 layout->addItem( mHorizontalSnapLine );
110 mVerticalSnapLine = createSnapLine();
111 mVerticalSnapLine->hide();
112 layout->addItem( mVerticalSnapLine );
113 mSectionLabel =
nullptr;
115 if ( mHorizontalRuler )
117 connect( &layout->
guides(), &QAbstractItemModel::dataChanged, mHorizontalRuler, [
this] { mHorizontalRuler->update(); } );
118 connect( &layout->
guides(), &QAbstractItemModel::rowsInserted, mHorizontalRuler, [
this] { mHorizontalRuler->update(); } );
119 connect( &layout->
guides(), &QAbstractItemModel::rowsRemoved, mHorizontalRuler, [
this] { mHorizontalRuler->update(); } );
120 connect( &layout->
guides(), &QAbstractItemModel::modelReset, mHorizontalRuler, [
this] { mHorizontalRuler->update(); } );
122 if ( mVerticalRuler )
124 connect( &layout->
guides(), &QAbstractItemModel::dataChanged, mVerticalRuler, [
this] { mVerticalRuler->update(); } );
125 connect( &layout->
guides(), &QAbstractItemModel::rowsInserted, mVerticalRuler, [
this] { mVerticalRuler->update(); } );
126 connect( &layout->
guides(), &QAbstractItemModel::rowsRemoved, mVerticalRuler, [
this] { mVerticalRuler->update(); } );
127 connect( &layout->
guides(), &QAbstractItemModel::modelReset, mVerticalRuler, [
this] { mVerticalRuler->update(); } );
152 if ( mHorizontalSnapLine )
153 mHorizontalSnapLine->hide();
154 if ( mVerticalSnapLine )
155 mVerticalSnapLine->hide();
167 if ( mTool && mTool ==
tool )
171 setCursor( Qt::ArrowCursor );
177 mPreviewEffect->setEnabled( enabled );
182 return mPreviewEffect->isEnabled();
187 mPreviewEffect->setMode( mode );
192 return mPreviewEffect->mode();
197 double currentScale = transform().m11();
198 scale *= currentScale;
200 setTransform( QTransform::fromScale( scale, scale ) );
212 setTransform( QTransform::fromScale( level, level ) );
216 const double dpi = mScreenHelper->screenDpi();
221 setTransform( QTransform::fromScale( mmLevel, mmLevel ) );
229 mHorizontalRuler = ruler;
233 connect( &layout->guides(), &QAbstractItemModel::dataChanged, ruler, [
this] { mHorizontalRuler->update(); } );
234 connect( &layout->guides(), &QAbstractItemModel::rowsInserted, ruler, [
this] { mHorizontalRuler->update(); } );
235 connect( &layout->guides(), &QAbstractItemModel::rowsRemoved, ruler, [
this] { mHorizontalRuler->update(); } );
236 connect( &layout->guides(), &QAbstractItemModel::modelReset, ruler, [
this] { mHorizontalRuler->update(); } );
243 mVerticalRuler = ruler;
247 connect( &layout->guides(), &QAbstractItemModel::dataChanged, ruler, [
this] { mVerticalRuler->update(); } );
248 connect( &layout->guides(), &QAbstractItemModel::rowsInserted, ruler, [
this] { mVerticalRuler->update(); } );
249 connect( &layout->guides(), &QAbstractItemModel::rowsRemoved, ruler, [
this] { mVerticalRuler->update(); } );
250 connect( &layout->guides(), &QAbstractItemModel::modelReset, ruler, [
this] { mVerticalRuler->update(); } );
257 mMenuProvider.reset( provider );
262 return mMenuProvider.get();
268 return QList<QgsLayoutItemPage *>();
271 QRect viewportRect( 0, 0, viewport()->width(), viewport()->height() );
272 QRectF visibleRect = mapToScene( viewportRect ).boundingRect();
282 QRect viewportRect( 0, 0, viewport()->width(), viewport()->height() );
283 QRectF visibleRect = mapToScene( viewportRect ).boundingRect();
326 QDomElement documentElement = doc.createElement( u
"LayoutItemClipboard"_s );
330 QSet<QgsLayoutMultiFrame *> copiedMultiFrames;
337 const QList<QgsLayoutItem *> groupedItems = itemGroup->items();
340 groupedItem->writeXml( documentElement, doc, context );
343 else if (
QgsLayoutFrame *frame = qobject_cast<QgsLayoutFrame *>( item ) )
346 if ( frame->multiFrame() && !copiedMultiFrames.contains( frame->multiFrame() ) )
348 frame->multiFrame()->writeXml( documentElement, doc, context );
349 copiedMultiFrames.insert( frame->multiFrame() );
352 item->writeXml( documentElement, doc, context );
356 doc.appendChild( documentElement );
364 QDomNodeList itemsNodes = doc.elementsByTagName( u
"LayoutItem"_s );
365 for (
int i = 0; i < itemsNodes.count(); ++i )
367 QDomNode itemNode = itemsNodes.at( i );
368 if ( itemNode.isElement() )
370 itemNode.toElement().removeAttribute( u
"uuid"_s );
371 itemNode.toElement().removeAttribute( u
"groupUuid"_s );
374 QDomNodeList multiFrameNodes = doc.elementsByTagName( u
"LayoutMultiFrame"_s );
375 for (
int i = 0; i < multiFrameNodes.count(); ++i )
377 QDomNode multiFrameNode = multiFrameNodes.at( i );
378 if ( multiFrameNode.isElement() )
380 multiFrameNode.toElement().removeAttribute( u
"uuid"_s );
381 QDomNodeList frameNodes = multiFrameNode.toElement().elementsByTagName( u
"childFrame"_s );
382 for (
int j = 0; j < frameNodes.count(); ++j )
384 QDomNode itemNode = frameNodes.at( j );
385 if ( itemNode.isElement() )
387 itemNode.toElement().removeAttribute( u
"uuid"_s );
393 QMimeData *mimeData =
new QMimeData;
394 mimeData->setData( u
"text/xml"_s, doc.toByteArray() );
395 QClipboard *clipboard = QApplication::clipboard();
396 clipboard->setMimeData( mimeData );
402 return QList<QgsLayoutItem *>();
404 QList<QgsLayoutItem *> pastedItems;
406 QClipboard *clipboard = QApplication::clipboard();
407 const QMimeData *mimeData = clipboard->mimeData();
411 if ( doc.setContent( mimeData->data( u
"text/xml"_s ) ) )
413 QDomElement docElem = doc.documentElement();
414 if ( docElem.tagName() ==
"LayoutItemClipboard"_L1 )
423 pt = mapToScene( mapFromGlobal( QCursor::pos() ) );
429 pt = mapToScene( viewport()->rect().center() );
447 return QList<QgsLayoutItem *>();
449 QList<QgsLayoutItem *> pastedItems;
451 QClipboard *clipboard = QApplication::clipboard();
452 const QMimeData *mimeData = clipboard->mimeData();
456 if ( doc.setContent( mimeData->data( u
"text/xml"_s ) ) )
458 QDomElement docElem = doc.documentElement();
459 if ( docElem.tagName() ==
"LayoutItemClipboard"_L1 )
474 QClipboard *clipboard = QApplication::clipboard();
475 const QMimeData *mimeData = clipboard->mimeData();
479 if ( doc.setContent( mimeData->data( u
"text/xml"_s ) ) )
481 QDomElement docElem = doc.documentElement();
482 if ( docElem.tagName() ==
"LayoutItemClipboard"_L1 )
491 double increment = 1.0;
492 if ( event->modifiers() & Qt::ShiftModifier )
497 else if ( event->modifiers() & Qt::AltModifier )
500 double viewScale = transform().m11();
503 increment = 1 / viewScale;
509 switch ( event->key() )
527 return QPointF( deltaX, deltaY );
532 mPaintingEnabled = enabled;
542 if ( !mSectionLabel )
544 mSectionLabel =
new QgsLayoutReportSectionLabel(
currentLayout(),
this );
546 mSectionLabel->setRect( 0, -200, 1000, 200 );
547 mSectionLabel->setZValue( -1 );
549 mSectionLabel->setLabel( label );
557 fitInView( scene()->sceneRect(), Qt::KeepAspectRatio );
568 QRect viewportRect( 0, 0, viewport()->width(), viewport()->height() );
569 QRectF visibleRect = mapToScene( viewportRect ).boundingRect();
571 double verticalCenter = ( visibleRect.top() + visibleRect.bottom() ) / 2.0;
576 const double tinyHeight = 0.01;
577 QRectF targetRect( scene()->sceneRect().left(), verticalCenter - tinyHeight, scene()->sceneRect().width(), tinyHeight * 2 );
579 fitInView( targetRect, Qt::KeepAspectRatio );
613 const QList<QGraphicsItem *> itemList =
currentLayout()->items();
614 for ( QGraphicsItem *graphicsItem : itemList )
618 if ( item && !paperItem )
655 const QList<QGraphicsItem *> itemList =
currentLayout()->items();
656 for ( QGraphicsItem *graphicsItem : itemList )
660 if ( item && !paperItem )
663 if ( item->isSelected() || item->
isLocked() )
687 if ( !selectedItems.isEmpty() )
689 previousSelectedItem = selectedItems.at( 0 );
692 if ( !previousSelectedItem )
700 selectedItem = layout->
itemsModel()->findItemBelow( previousSelectedItem );
702 selectedItem = layout->
itemsModel()->findItemAbove( previousSelectedItem );
729 bool itemsRaised =
false;
752 bool itemsLowered =
false;
775 bool itemsRaised =
false;
798 bool itemsLowered =
false;
824 item->setLocked(
true );
844 const QList<QGraphicsItem *> itemList =
currentLayout()->items();
845 for ( QGraphicsItem *graphicItem : itemList )
906 item->setSelected(
false );
919 QList<QgsLayoutItem *> ungroupedItems;
927 ungroupedItems.append(
currentLayout()->ungroupItems( itemGroup ) );
931 if ( !ungroupedItems.empty() )
933 for (
QgsLayoutItem *item : std::as_const( ungroupedItems ) )
935 item->setSelected(
true );
947 mSnapMarker->setVisible(
false );
952 mTool->layoutPressEvent( me.get() );
953 event->setAccepted( me->isAccepted() );
956 if ( !mTool || !event->isAccepted() )
958 if ( event->button() == Qt::MiddleButton && mTool != mSpacePanTool && mTool != mSpaceZoomTool )
961 setTool( mMidMouseButtonPanTool );
964 else if ( event->button() == Qt::RightButton && mMenuProvider )
966 QMenu *menu = mMenuProvider->createContextMenu(
this,
currentLayout(), mapToScene( event->pos() ) );
969 menu->exec( event->globalPos() );
975 QGraphicsView::mousePressEvent( event );
988 mTool->layoutReleaseEvent( me.get() );
989 event->setAccepted( me->isAccepted() );
992 if ( !mTool || !event->isAccepted() )
993 QGraphicsView::mouseReleaseEvent( event );
1001 mMouseCurrentXY =
event->pos();
1003 QPointF cursorPos = mapToScene( mMouseCurrentXY );
1006 auto me = std::make_unique<QgsLayoutViewMouseEvent>(
this, event,
false );
1009 me->snapPoint( mHorizontalSnapLine, mVerticalSnapLine, mTool->ignoredSnapItems() );
1014 if ( me->isSnapped() )
1016 cursorPos = me->snappedPoint();
1019 mSnapMarker->setPos( me->snappedPoint() );
1020 mSnapMarker->setVisible(
true );
1023 else if ( mSnapMarker )
1025 mSnapMarker->setVisible(
false );
1028 mTool->layoutMoveEvent( me.get() );
1029 event->setAccepted( me->isAccepted() );
1035 if ( !mTool || !event->isAccepted() )
1036 QGraphicsView::mouseMoveEvent( event );
1047 mTool->layoutDoubleClickEvent( me.get() );
1048 event->setAccepted( me->isAccepted() );
1051 if ( !mTool || !event->isAccepted() )
1052 QGraphicsView::mouseDoubleClickEvent( event );
1062 mTool->wheelEvent( event );
1065 if ( !mTool || !event->isAccepted() )
1079 mTool->keyPressEvent( event );
1082 if ( mTool && event->isAccepted() )
1085 if ( event->key() == Qt::Key_Space && !event->isAutoRepeat() && mTool != mMidMouseButtonPanTool )
1087 if ( !( event->modifiers() & Qt::ControlModifier ) )
1099 else if ( event->key() == Qt::Key_Left
1100 || event->key() == Qt::Key_Right
1101 || event->key() == Qt::Key_Up
1102 || event->key() == Qt::Key_Down )
1113 item->attemptMoveBy( delta.x(), delta.y() );
1128 mTool->keyReleaseEvent( event );
1131 if ( !mTool || !event->isAccepted() )
1132 QGraphicsView::keyReleaseEvent( event );
1137 QGraphicsView::resizeEvent( event );
1144 QGraphicsView::scrollContentsBy( dx, dy );
1158 if ( mPaintingEnabled )
1160 QGraphicsView::paintEvent( event );
1169void QgsLayoutView::invalidateCachedRenders()
1175 QList<QgsLayoutItem *> items;
1180 item->invalidateCache();
1186 if ( mHorizontalRuler )
1188 mHorizontalRuler->setSceneTransform( viewportTransform() );
1190 if ( mVerticalRuler )
1192 mVerticalRuler->setSceneTransform( viewportTransform() );
1196 QRect viewportRect( 0, 0, viewport()->width(), viewport()->height() );
1197 QRectF visibleRect = mapToScene( viewportRect ).boundingRect();
1198 QPointF centerVisible = visibleRect.center();
1203 if ( newPage != mCurrentPage )
1205 mCurrentPage = newPage;
1216void QgsLayoutView::wheelZoom( QWheelEvent *event )
1220 double zoomFactor = settings.
value( u
"qgis/zoom_factor"_s, 2 ).toDouble();
1221 bool reverseZoom = settings.
value( u
"qgis/reverse_wheel_zoom"_s,
false ).toBool();
1222 bool zoomIn = reverseZoom ?
event->angleDelta().y() < 0 :
event->angleDelta().y() > 0;
1225 zoomFactor = 1.0 + ( zoomFactor - 1.0 ) / 120.0 * std::fabs( event->angleDelta().y() );
1227 if ( event->modifiers() & Qt::ControlModifier )
1230 zoomFactor = 1.0 + ( zoomFactor - 1.0 ) / 20.0;
1234 double scaleFactor = (
zoomIn ? 1 / zoomFactor : zoomFactor );
1237 QRect viewportRect( 0, 0, viewport()->width(), viewport()->height() );
1238 QgsRectangle visibleRect = QgsRectangle( mapToScene( viewportRect ).boundingRect() );
1241 QPointF scenePoint = mapToScene( event->position().x(), event->position().y() );
1244 QgsPointXY oldCenter( visibleRect.
center() );
1245 QgsPointXY newCenter( scenePoint.x() + ( ( oldCenter.x() - scenePoint.x() ) * scaleFactor ), scenePoint.y() + ( ( oldCenter.y() - scenePoint.y() ) * scaleFactor ) );
1246 centerOn( newCenter.x(), newCenter.y() );
1259QGraphicsLineItem *QgsLayoutView::createSnapLine()
const
1261 auto item = std::make_unique<QGraphicsLineItem>(
nullptr );
1262 QPen pen = QPen( QColor( Qt::blue ) );
1263 pen.setStyle( Qt::DotLine );
1264 pen.setWidthF( 0.0 );
1265 item->setPen( pen );
1267 return item.release();
1275QgsLayoutViewSnapMarker::QgsLayoutViewSnapMarker()
1276 : QGraphicsRectItem( QRectF( 0, 0, 0, 0 ) )
1279 QFontMetrics fm( f );
1280 mSize = fm.horizontalAdvance(
'X' );
1281 setPen( QPen( Qt::transparent, mSize ) );
1283 setFlags( flags() | QGraphicsItem::ItemIgnoresTransformations );
1287void QgsLayoutViewSnapMarker::paint( QPainter *p,
const QStyleOptionGraphicsItem *, QWidget * )
1289 QPen pen( QColor( 255, 0, 0 ) );
1292 p->setBrush( Qt::NoBrush );
1294 double halfSize = mSize / 2.0;
1295 p->drawLine( QLineF( -halfSize, -halfSize, halfSize, halfSize ) );
1296 p->drawLine( QLineF( -halfSize, halfSize, halfSize, -halfSize ) );
@ Millimeters
Millimeters.
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 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.
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 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.
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.
QgsLayoutMeasurement convertFromLayoutUnits(double length, Qgis::LayoutUnit unit) const
Converts a length measurement from the layout's native units to a specified target unit.
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.
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 graphics effect which can be applied to a widget to simulate various printing and color blindness m...
void setDirty(bool b=true)
Flag the project as dirty (modified).
A container for the context for various read/write operations on objects.
A utility class for dynamic handling of changes to screen properties.
Stores settings for use within QGIS.
QVariant value(const QString &key, const QVariant &defaultValue=QVariant(), Section section=NoSection) const
Returns the value for setting key.
void selectNextByZOrder(QgsLayout *layout, bool above)