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, [
this] { mHorizontalRuler->update(); } );
 
  112    connect( &layout->
guides(), &QAbstractItemModel::rowsInserted, mHorizontalRuler, [
this] { mHorizontalRuler->update(); } );
 
  113    connect( &layout->
guides(), &QAbstractItemModel::rowsRemoved, mHorizontalRuler, [
this] { mHorizontalRuler->update(); } );
 
  114    connect( &layout->
guides(), &QAbstractItemModel::modelReset, mHorizontalRuler, [
this] { mHorizontalRuler->update(); } );
 
  116  if ( mVerticalRuler )
 
  118    connect( &layout->
guides(), &QAbstractItemModel::dataChanged, mVerticalRuler, [
this] { mVerticalRuler->update(); } );
 
  119    connect( &layout->
guides(), &QAbstractItemModel::rowsInserted, mVerticalRuler, [
this] { mVerticalRuler->update(); } );
 
  120    connect( &layout->
guides(), &QAbstractItemModel::rowsRemoved, mVerticalRuler, [
this] { mVerticalRuler->update(); } );
 
  121    connect( &layout->
guides(), &QAbstractItemModel::modelReset, mVerticalRuler, [
this] { 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, [
this] { mHorizontalRuler->update(); } );
 
  228    connect( &layout->guides(), &QAbstractItemModel::rowsInserted, ruler, [
this] { mHorizontalRuler->update(); } );
 
  229    connect( &layout->guides(), &QAbstractItemModel::rowsRemoved, ruler, [
this] { mHorizontalRuler->update(); } );
 
  230    connect( &layout->guides(), &QAbstractItemModel::modelReset, ruler, [
this] { mHorizontalRuler->update(); } );
 
 
  237  mVerticalRuler = ruler;
 
  241    connect( &layout->guides(), &QAbstractItemModel::dataChanged, ruler, [
this] { mVerticalRuler->update(); } );
 
  242    connect( &layout->guides(), &QAbstractItemModel::rowsInserted, ruler, [
this] { mVerticalRuler->update(); } );
 
  243    connect( &layout->guides(), &QAbstractItemModel::rowsRemoved, ruler, [
this] { mVerticalRuler->update(); } );
 
  244    connect( &layout->guides(), &QAbstractItemModel::modelReset, ruler, [
this] { 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 && mTool != mSpacePanTool && mTool != mSpaceZoomTool )
 
  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() && mTool != mMidMouseButtonPanTool )
 
 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)