37#include "moc_qgslayoutview.cpp"
44#define MIN_VIEW_SCALE 0.05
45#define MAX_VIEW_SCALE 1000.0
48 : QGraphicsView( parent )
50 setResizeAnchor( QGraphicsView::AnchorViewCenter );
51 setMouseTracking(
true );
52 viewport()->setMouseTracking(
true );
58 viewport()->setStyleSheet( QStringLiteral(
"background-color:#d7d7d7;" ) );
65 viewport()->setGraphicsEffect( mPreviewEffect );
79 return qobject_cast<QgsLayout *>( scene() );
84 return qobject_cast<const QgsLayout *>( scene() );
98 mSnapMarker =
new QgsLayoutViewSnapMarker();
100 layout->addItem( mSnapMarker );
101 mHorizontalSnapLine = createSnapLine();
102 mHorizontalSnapLine->hide();
103 layout->addItem( mHorizontalSnapLine );
104 mVerticalSnapLine = createSnapLine();
105 mVerticalSnapLine->hide();
106 layout->addItem( mVerticalSnapLine );
107 mSectionLabel =
nullptr;
109 if ( mHorizontalRuler )
111 connect( &layout->
guides(), &QAbstractItemModel::dataChanged, mHorizontalRuler, [=] { mHorizontalRuler->update(); } );
112 connect( &layout->
guides(), &QAbstractItemModel::rowsInserted, mHorizontalRuler, [=] { mHorizontalRuler->update(); } );
113 connect( &layout->
guides(), &QAbstractItemModel::rowsRemoved, mHorizontalRuler, [=] { mHorizontalRuler->update(); } );
114 connect( &layout->
guides(), &QAbstractItemModel::modelReset, mHorizontalRuler, [=] { mHorizontalRuler->update(); } );
116 if ( mVerticalRuler )
118 connect( &layout->
guides(), &QAbstractItemModel::dataChanged, mVerticalRuler, [=] { mVerticalRuler->update(); } );
119 connect( &layout->
guides(), &QAbstractItemModel::rowsInserted, mVerticalRuler, [=] { mVerticalRuler->update(); } );
120 connect( &layout->
guides(), &QAbstractItemModel::rowsRemoved, mVerticalRuler, [=] { mVerticalRuler->update(); } );
121 connect( &layout->
guides(), &QAbstractItemModel::modelReset, mVerticalRuler, [=] { mVerticalRuler->update(); } );
146 if ( mHorizontalSnapLine )
147 mHorizontalSnapLine->hide();
148 if ( mVerticalSnapLine )
149 mVerticalSnapLine->hide();
161 if ( mTool && mTool ==
tool )
165 setCursor( Qt::ArrowCursor );
171 mPreviewEffect->setEnabled( enabled );
176 return mPreviewEffect->isEnabled();
181 mPreviewEffect->
setMode( mode );
186 return mPreviewEffect->
mode();
191 double currentScale = transform().m11();
192 scale *= currentScale;
194 setTransform( QTransform::fromScale( scale, scale ) );
206 setTransform( QTransform::fromScale( level, level ) );
210 const double dpi = mScreenHelper->
screenDpi();
215 setTransform( QTransform::fromScale( mmLevel, mmLevel ) );
223 mHorizontalRuler = ruler;
227 connect( &layout->guides(), &QAbstractItemModel::dataChanged, ruler, [=] { mHorizontalRuler->update(); } );
228 connect( &layout->guides(), &QAbstractItemModel::rowsInserted, ruler, [=] { mHorizontalRuler->update(); } );
229 connect( &layout->guides(), &QAbstractItemModel::rowsRemoved, ruler, [=] { mHorizontalRuler->update(); } );
230 connect( &layout->guides(), &QAbstractItemModel::modelReset, ruler, [=] { mHorizontalRuler->update(); } );
237 mVerticalRuler = ruler;
241 connect( &layout->guides(), &QAbstractItemModel::dataChanged, ruler, [=] { mVerticalRuler->update(); } );
242 connect( &layout->guides(), &QAbstractItemModel::rowsInserted, ruler, [=] { mVerticalRuler->update(); } );
243 connect( &layout->guides(), &QAbstractItemModel::rowsRemoved, ruler, [=] { mVerticalRuler->update(); } );
244 connect( &layout->guides(), &QAbstractItemModel::modelReset, ruler, [=] { mVerticalRuler->update(); } );
251 mMenuProvider.reset( provider );
256 return mMenuProvider.get();
262 return QList<QgsLayoutItemPage *>();
265 QRect viewportRect( 0, 0, viewport()->width(), viewport()->height() );
266 QRectF visibleRect = mapToScene( viewportRect ).boundingRect();
276 QRect viewportRect( 0, 0, viewport()->width(), viewport()->height() );
277 QRectF visibleRect = mapToScene( viewportRect ).boundingRect();
320 QDomElement documentElement = doc.createElement( QStringLiteral(
"LayoutItemClipboard" ) );
324 QSet<QgsLayoutMultiFrame *> copiedMultiFrames;
331 const QList<QgsLayoutItem *> groupedItems = itemGroup->items();
334 groupedItem->writeXml( documentElement, doc, context );
337 else if (
QgsLayoutFrame *frame = qobject_cast<QgsLayoutFrame *>( item ) )
340 if ( frame->multiFrame() && !copiedMultiFrames.contains( frame->multiFrame() ) )
342 frame->multiFrame()->writeXml( documentElement, doc, context );
343 copiedMultiFrames.insert( frame->multiFrame() );
346 item->writeXml( documentElement, doc, context );
350 doc.appendChild( documentElement );
358 QDomNodeList itemsNodes = doc.elementsByTagName( QStringLiteral(
"LayoutItem" ) );
359 for (
int i = 0; i < itemsNodes.count(); ++i )
361 QDomNode itemNode = itemsNodes.at( i );
362 if ( itemNode.isElement() )
364 itemNode.toElement().removeAttribute( QStringLiteral(
"uuid" ) );
365 itemNode.toElement().removeAttribute( QStringLiteral(
"groupUuid" ) );
368 QDomNodeList multiFrameNodes = doc.elementsByTagName( QStringLiteral(
"LayoutMultiFrame" ) );
369 for (
int i = 0; i < multiFrameNodes.count(); ++i )
371 QDomNode multiFrameNode = multiFrameNodes.at( i );
372 if ( multiFrameNode.isElement() )
374 multiFrameNode.toElement().removeAttribute( QStringLiteral(
"uuid" ) );
375 QDomNodeList frameNodes = multiFrameNode.toElement().elementsByTagName( QStringLiteral(
"childFrame" ) );
376 for (
int j = 0; j < frameNodes.count(); ++j )
378 QDomNode itemNode = frameNodes.at( j );
379 if ( itemNode.isElement() )
381 itemNode.toElement().removeAttribute( QStringLiteral(
"uuid" ) );
387 QMimeData *mimeData =
new QMimeData;
388 mimeData->setData( QStringLiteral(
"text/xml" ), doc.toByteArray() );
389 QClipboard *clipboard = QApplication::clipboard();
390 clipboard->setMimeData( mimeData );
396 return QList<QgsLayoutItem *>();
398 QList<QgsLayoutItem *> pastedItems;
400 QClipboard *clipboard = QApplication::clipboard();
401 const QMimeData *mimeData = clipboard->mimeData();
405 if ( doc.setContent( 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 const QMimeData *mimeData = clipboard->mimeData();
450 if ( doc.setContent( mimeData->data( QStringLiteral(
"text/xml" ) ) ) )
452 QDomElement docElem = doc.documentElement();
453 if ( docElem.tagName() == QLatin1String(
"LayoutItemClipboard" ) )
468 QClipboard *clipboard = QApplication::clipboard();
469 const QMimeData *mimeData = clipboard->mimeData();
473 if ( doc.setContent( mimeData->data( QStringLiteral(
"text/xml" ) ) ) )
475 QDomElement docElem = doc.documentElement();
476 if ( docElem.tagName() == QLatin1String(
"LayoutItemClipboard" ) )
485 double increment = 1.0;
486 if ( event->modifiers() & Qt::ShiftModifier )
491 else if ( event->modifiers() & Qt::AltModifier )
494 double viewScale = transform().m11();
497 increment = 1 / viewScale;
503 switch ( event->key() )
521 return QPointF( deltaX, deltaY );
526 mPaintingEnabled = enabled;
536 if ( !mSectionLabel )
538 mSectionLabel =
new QgsLayoutReportSectionLabel(
currentLayout(),
this );
540 mSectionLabel->setRect( 0, -200, 1000, 200 );
541 mSectionLabel->setZValue( -1 );
543 mSectionLabel->setLabel( label );
551 fitInView( scene()->sceneRect(), Qt::KeepAspectRatio );
562 QRect viewportRect( 0, 0, viewport()->width(), viewport()->height() );
563 QRectF visibleRect = mapToScene( viewportRect ).boundingRect();
565 double verticalCenter = ( visibleRect.top() + visibleRect.bottom() ) / 2.0;
570 const double tinyHeight = 0.01;
571 QRectF targetRect( scene()->sceneRect().left(), verticalCenter - tinyHeight, scene()->sceneRect().width(), tinyHeight * 2 );
573 fitInView( targetRect, Qt::KeepAspectRatio );
607 const QList<QGraphicsItem *> itemList =
currentLayout()->items();
608 for ( QGraphicsItem *graphicsItem : itemList )
612 if ( item && !paperItem )
649 const QList<QGraphicsItem *> itemList =
currentLayout()->items();
650 for ( QGraphicsItem *graphicsItem : itemList )
654 if ( item && !paperItem )
657 if ( item->isSelected() || item->
isLocked() )
681 if ( !selectedItems.isEmpty() )
683 previousSelectedItem = selectedItems.at( 0 );
686 if ( !previousSelectedItem )
694 selectedItem = layout->
itemsModel()->findItemBelow( previousSelectedItem );
696 selectedItem = layout->
itemsModel()->findItemAbove( previousSelectedItem );
723 bool itemsRaised =
false;
746 bool itemsLowered =
false;
769 bool itemsRaised =
false;
792 bool itemsLowered =
false;
818 item->setLocked(
true );
838 const QList<QGraphicsItem *> itemList =
currentLayout()->items();
839 for ( QGraphicsItem *graphicItem : itemList )
913 QList<QgsLayoutItem *> ungroupedItems;
925 if ( !ungroupedItems.empty() )
927 for (
QgsLayoutItem *item : std::as_const( ungroupedItems ) )
941 mSnapMarker->setVisible(
false );
946 mTool->layoutPressEvent( me.get() );
947 event->setAccepted( me->isAccepted() );
950 if ( !mTool || !event->isAccepted() )
952 if ( event->button() == Qt::MiddleButton )
955 setTool( mMidMouseButtonPanTool );
958 else if ( event->button() == Qt::RightButton && mMenuProvider )
960 QMenu *menu = mMenuProvider->createContextMenu(
this,
currentLayout(), mapToScene( event->pos() ) );
963 menu->exec( event->globalPos() );
969 QGraphicsView::mousePressEvent( event );
982 mTool->layoutReleaseEvent( me.get() );
983 event->setAccepted( me->isAccepted() );
986 if ( !mTool || !event->isAccepted() )
987 QGraphicsView::mouseReleaseEvent( event );
995 mMouseCurrentXY =
event->pos();
997 QPointF cursorPos = mapToScene( mMouseCurrentXY );
1000 auto me = std::make_unique<QgsLayoutViewMouseEvent>(
this, event,
false );
1003 me->snapPoint( mHorizontalSnapLine, mVerticalSnapLine, mTool->ignoredSnapItems() );
1008 if ( me->isSnapped() )
1010 cursorPos = me->snappedPoint();
1013 mSnapMarker->setPos( me->snappedPoint() );
1014 mSnapMarker->setVisible(
true );
1017 else if ( mSnapMarker )
1019 mSnapMarker->setVisible(
false );
1022 mTool->layoutMoveEvent( me.get() );
1023 event->setAccepted( me->isAccepted() );
1029 if ( !mTool || !event->isAccepted() )
1030 QGraphicsView::mouseMoveEvent( event );
1041 mTool->layoutDoubleClickEvent( me.get() );
1042 event->setAccepted( me->isAccepted() );
1045 if ( !mTool || !event->isAccepted() )
1046 QGraphicsView::mouseDoubleClickEvent( event );
1056 mTool->wheelEvent( event );
1059 if ( !mTool || !event->isAccepted() )
1073 mTool->keyPressEvent( event );
1076 if ( mTool && event->isAccepted() )
1079 if ( event->key() == Qt::Key_Space && !event->isAutoRepeat() )
1081 if ( !( event->modifiers() & Qt::ControlModifier ) )
1093 else if ( event->key() == Qt::Key_Left
1094 || event->key() == Qt::Key_Right
1095 || event->key() == Qt::Key_Up
1096 || event->key() == Qt::Key_Down )
1107 item->attemptMoveBy( delta.x(), delta.y() );
1122 mTool->keyReleaseEvent( event );
1125 if ( !mTool || !event->isAccepted() )
1126 QGraphicsView::keyReleaseEvent( event );
1131 QGraphicsView::resizeEvent( event );
1138 QGraphicsView::scrollContentsBy( dx, dy );
1152 if ( mPaintingEnabled )
1154 QGraphicsView::paintEvent( event );
1163void QgsLayoutView::invalidateCachedRenders()
1169 QList<QgsLayoutItem *> items;
1174 item->invalidateCache();
1180 if ( mHorizontalRuler )
1184 if ( mVerticalRuler )
1190 QRect viewportRect( 0, 0, viewport()->width(), viewport()->height() );
1191 QRectF visibleRect = mapToScene( viewportRect ).boundingRect();
1192 QPointF centerVisible = visibleRect.center();
1197 if ( newPage != mCurrentPage )
1199 mCurrentPage = newPage;
1210void QgsLayoutView::wheelZoom( QWheelEvent *event )
1214 double zoomFactor = settings.
value( QStringLiteral(
"qgis/zoom_factor" ), 2 ).toDouble();
1215 bool reverseZoom = settings.
value( QStringLiteral(
"qgis/reverse_wheel_zoom" ),
false ).toBool();
1216 bool zoomIn = reverseZoom ?
event->angleDelta().y() < 0 :
event->angleDelta().y() > 0;
1219 zoomFactor = 1.0 + ( zoomFactor - 1.0 ) / 120.0 * std::fabs( event->angleDelta().y() );
1221 if ( event->modifiers() & Qt::ControlModifier )
1224 zoomFactor = 1.0 + ( zoomFactor - 1.0 ) / 20.0;
1228 double scaleFactor = (
zoomIn ? 1 / zoomFactor : zoomFactor );
1231 QRect viewportRect( 0, 0, viewport()->width(), viewport()->height() );
1235#if QT_VERSION < QT_VERSION_CHECK( 6, 0, 0 )
1236 QPointF scenePoint = mapToScene( event->pos() );
1238 QPointF scenePoint = mapToScene( event->position().x(), event->position().y() );
1243 QgsPointXY newCenter( scenePoint.x() + ( ( oldCenter.x() - scenePoint.x() ) * scaleFactor ), scenePoint.y() + ( ( oldCenter.y() - scenePoint.y() ) * scaleFactor ) );
1244 centerOn( newCenter.x(), newCenter.y() );
1257QGraphicsLineItem *QgsLayoutView::createSnapLine()
const
1259 auto item = std::make_unique<QGraphicsLineItem>(
nullptr );
1260 QPen pen = QPen( QColor( Qt::blue ) );
1261 pen.setStyle( Qt::DotLine );
1262 pen.setWidthF( 0.0 );
1263 item->setPen( pen );
1265 return item.release();
1273QgsLayoutViewSnapMarker::QgsLayoutViewSnapMarker()
1274 : QGraphicsRectItem( QRectF( 0, 0, 0, 0 ) )
1277 QFontMetrics fm( f );
1278 mSize = fm.horizontalAdvance(
'X' );
1279 setPen( QPen( Qt::transparent, mSize ) );
1281 setFlags( flags() | QGraphicsItem::ItemIgnoresTransformations );
1285void QgsLayoutViewSnapMarker::paint( QPainter *p,
const QStyleOptionGraphicsItem *, QWidget * )
1287 QPen pen( QColor( 255, 0, 0 ) );
1290 p->setBrush( Qt::NoBrush );
1292 double halfSize = mSize / 2.0;
1293 p->drawLine( QLineF( -halfSize, -halfSize, halfSize, halfSize ) );
1294 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 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.
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.
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.
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 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).
A container for the context for various read/write operations on objects.
A rectangle specified with double values.
A utility class for dynamic handling of changes to screen properties.
double screenDpi() const
Returns the current screen DPI for the screen that the parent widget appears on.
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)