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)