40 , mGridSettings( this )
45 setBackgroundBrush( Qt::NoBrush );
52 mUndoStack->blockCommands(
true );
54 deleteAndRemoveMultiFrames();
62 QList<QGraphicsItem *> itemList = items();
67 for ( QGraphicsItem *item : qgis::as_const( itemList ) )
69 if ( dynamic_cast< QgsLayoutItem * >( item ) && !dynamic_cast< QgsLayoutItemPage *>( item ) )
84 QDomDocument currentDoc;
87 QDomElement elem =
writeXml( currentDoc, context );
88 currentDoc.appendChild( elem );
90 std::unique_ptr< QgsLayout > newLayout = qgis::make_unique< QgsLayout >( mProject );
92 newLayout->loadFromTemplate( currentDoc, context,
true, &ok );
98 return newLayout.release();
106 mPageCollection->addPage( page );
107 mUndoStack->stack()->clear();
112 deleteAndRemoveMultiFrames();
115 const QList<QGraphicsItem *> itemList = items();
116 for ( QGraphicsItem *item : itemList )
120 if ( cItem && !pItem )
122 removeLayoutItemPrivate( cItem );
125 mItemsModel->clear();
127 mPageCollection->clear();
128 mUndoStack->stack()->clear();
138 return mItemsModel.get();
143 QList<QgsLayoutItem *> layoutItemList;
145 const QList<QGraphicsItem *> graphicsItemList = selectedItems();
146 for ( QGraphicsItem *item : graphicsItemList )
149 if ( layoutItem && ( includeLockedItems || !layoutItem->
isLocked() ) )
151 layoutItemList.push_back( layoutItem );
155 return layoutItemList;
174 const QList<QGraphicsItem *> selectedItemList = selectedItems();
175 for ( QGraphicsItem *item : selectedItemList )
177 if (
QgsLayoutItem *layoutItem = dynamic_cast<QgsLayoutItem *>( item ) )
179 layoutItem->setSelected(
false );
188 bool result = mItemsModel->reorderItemUp( item );
189 if ( result && !deferUpdate )
201 bool result = mItemsModel->reorderItemDown( item );
202 if ( result && !deferUpdate )
214 bool result = mItemsModel->reorderItemToTop( item );
215 if ( result && !deferUpdate )
227 bool result = mItemsModel->reorderItemToBottom( item );
228 if ( result && !deferUpdate )
239 QList<QgsLayoutItem *> itemList;
243 if ( item->uuid() == uuid )
245 else if ( includeTemplateUuids && item->mTemplateUuid == uuid )
254 QList<QgsLayoutItem *> itemList;
258 if ( item->mTemplateUuid == uuid )
267 const QList<QGraphicsItem *> itemList = items();
268 for ( QGraphicsItem *item : itemList )
271 if ( layoutItem && layoutItem->
id() == id )
283 if ( mf->uuid() == uuid )
285 else if ( includeTemplateUuids && mf->mTemplateUuid == uuid )
300 const QList<QGraphicsItem *> itemList = items( position, Qt::IntersectsItemShape, Qt::DescendingOrder );
302 bool foundBelowItem =
false;
303 for ( QGraphicsItem *graphicsItem : itemList )
307 if ( layoutItem && !paperItem )
311 if ( ( ! belowItem || foundBelowItem ) && ( !ignoreLocked || !layoutItem->
isLocked() ) )
317 if ( layoutItem == belowItem )
320 foundBelowItem =
true;
360 return *mRenderContext;
365 return *mRenderContext;
370 return *mReportContext;
375 return *mReportContext;
381 mPageCollection->redraw();
386 return mPageCollection->guides();
391 return mPageCollection->guides();
399 if ( mReportContext->
layer() )
408 mCustomProperties.
setValue( key, value );
410 if ( key.startsWith( QLatin1String(
"variable" ) ) )
416 return mCustomProperties.
value( key, defaultValue );
421 mCustomProperties.
remove( key );
426 return mCustomProperties.
keys();
436 QList< QgsLayoutItemMap * > maps;
439 double largestMapArea = 0;
442 double area = map->rect().width() * map->rect().height();
443 if ( area > largestMapArea )
445 largestMapArea = area;
454 mWorldFileMapId = map ? map->
uuid() : QString();
460 return mPageCollection.get();
465 return mPageCollection.get();
474 const auto constItems = items();
475 for (
const QGraphicsItem *item : constItems )
482 if ( !isPage || !ignorePages )
490 itemBounds = layoutItem->mapToScene( layoutItem->rect() ).boundingRect();
493 itemBounds = item->sceneBoundingRect();
495 if ( bounds.isValid() )
496 bounds = bounds.united( itemBounds );
502 if ( bounds.isValid() && margin > 0.0 )
505 double maxWidth = mPageCollection->maximumPageWidth();
506 bounds.adjust( -maxWidth * margin, -maxWidth * margin, maxWidth * margin, maxWidth * margin );
519 const QList<QGraphicsItem *> itemList = items();
520 for ( QGraphicsItem *item : itemList )
525 if ( visibleOnly && !layoutItem->isVisible() )
529 if ( bounds.isValid() )
530 bounds = bounds.united( item->sceneBoundingRect() );
532 bounds = item->sceneBoundingRect();
541 addLayoutItemPrivate( item );
545 undoText = tr(
"Create %1" ).arg( metadata->visibleName() );
549 undoText = tr(
"Create Item" );
551 if ( !mUndoStack->isBlocked() )
557 std::unique_ptr< QgsLayoutItemDeleteUndoCommand > deleteCommand;
558 if ( !mUndoStack->isBlocked() )
560 mUndoStack->beginMacro( tr(
"Delete Items" ) );
563 removeLayoutItemPrivate( item );
566 mUndoStack->push( deleteCommand.release() );
567 mUndoStack->endMacro();
576 if ( !mMultiFrames.contains( multiFrame ) )
577 mMultiFrames << multiFrame;
582 mMultiFrames.removeAll( multiFrame );
592 QFile templateFile( path );
593 if ( !templateFile.open( QIODevice::WriteOnly | QIODevice::Truncate ) )
598 QDomDocument saveDocument;
599 QDomElement elem =
writeXml( saveDocument, context );
600 saveDocument.appendChild( elem );
602 if ( templateFile.write( saveDocument.toByteArray() ) == -1 )
613 QList< QgsLayoutItem * > result;
633 QDomNodeList itemsNodes = doc.elementsByTagName( QStringLiteral(
"LayoutItem" ) );
634 for (
int i = 0; i < itemsNodes.count(); ++i )
636 QDomNode itemNode = itemsNodes.at( i );
637 if ( itemNode.isElement() )
639 itemNode.toElement().removeAttribute( QStringLiteral(
"uuid" ) );
642 QDomNodeList multiFrameNodes = doc.elementsByTagName( QStringLiteral(
"LayoutMultiFrame" ) );
643 for (
int i = 0; i < multiFrameNodes.count(); ++i )
645 QDomNode multiFrameNode = multiFrameNodes.at( i );
646 if ( multiFrameNode.isElement() )
648 multiFrameNode.toElement().removeAttribute( QStringLiteral(
"uuid" ) );
649 QDomNodeList frameNodes = multiFrameNode.toElement().elementsByTagName( QStringLiteral(
"childFrame" ) );
650 QDomNode itemNode = frameNodes.at( i );
651 if ( itemNode.isElement() )
653 itemNode.toElement().removeAttribute( QStringLiteral(
"uuid" ) );
661 QDomElement layoutElem = doc.documentElement();
662 if ( layoutElem.isNull() )
667 bool loadOk =
readXml( layoutElem, doc, context );
687 return mUndoStack.get();
692 return mUndoStack.get();
707 void saveState( QDomDocument &stateDoc )
const override 710 QDomElement documentElement = stateDoc.createElement( QStringLiteral(
"UndoState" ) );
712 stateDoc.appendChild( documentElement );
715 void restoreState( QDomDocument &stateDoc )
override 722 mLayout->readXmlLayoutSettings( stateDoc.documentElement(), stateDoc,
QgsReadWriteContext() );
723 mLayout->project()->setDirty(
true );
739 if ( items.size() < 2 )
745 mUndoStack->beginMacro( tr(
"Group Items" ) );
749 itemGroup->addItem( item );
754 std::unique_ptr< QgsLayoutItemGroupUndoCommand >
c(
new QgsLayoutItemGroupUndoCommand( QgsLayoutItemGroupUndoCommand::Grouped, returnGroup,
this, tr(
"Group Items" ) ) );
755 mUndoStack->push( c.release() );
756 mProject->setDirty(
true );
758 mUndoStack->endMacro();
765 QList<QgsLayoutItem *> ungroupedItems;
768 return ungroupedItems;
771 mUndoStack->beginMacro( tr(
"Ungroup Items" ) );
774 std::unique_ptr< QgsLayoutItemGroupUndoCommand >
c(
new QgsLayoutItemGroupUndoCommand( QgsLayoutItemGroupUndoCommand::Ungrouped, group,
this, tr(
"Ungroup Items" ) ) );
775 mUndoStack->push( c.release() );
777 mProject->setDirty(
true );
779 ungroupedItems = group->
items();
783 mUndoStack->endMacro();
785 return ungroupedItems;
790 const QList< QGraphicsItem * > constItems = items();
791 for (
const QGraphicsItem *item : constItems )
797 if ( !layoutItem->
accept( visitor ) )
805 mUndoStack->blockCommands(
true );
806 mPageCollection->beginPageSizeChange();
808 mPageCollection->reflow();
809 mPageCollection->endPageSizeChange();
810 mUndoStack->blockCommands(
false );
814 void QgsLayout::writeXmlLayoutSettings( QDomElement &element, QDomDocument &document,
const QgsReadWriteContext & )
const 816 mCustomProperties.writeXml( element, document );
818 element.setAttribute( QStringLiteral(
"worldFileMap" ), mWorldFileMapId );
819 element.setAttribute( QStringLiteral(
"printResolution" ), mRenderContext->dpi() );
824 QDomElement element = document.createElement( QStringLiteral(
"Layout" ) );
827 return object->writeXml( element, document, context );
830 save( &mGridSettings );
831 save( mPageCollection.get() );
834 const QList<QGraphicsItem *> itemList = items();
835 for (
const QGraphicsItem *graphicsItem : itemList )
837 if (
const QgsLayoutItem *item = dynamic_cast< const QgsLayoutItem *>( graphicsItem ) )
842 item->writeXml( element, document, context );
849 if ( mf->frameCount() > 0 )
850 mf->writeXml( element, document, context );
853 writeXmlLayoutSettings( element, document, context );
857 bool QgsLayout::readXmlLayoutSettings(
const QDomElement &layoutElement,
const QDomDocument &,
const QgsReadWriteContext & )
859 mCustomProperties.readXml( layoutElement );
861 mWorldFileMapId = layoutElement.attribute( QStringLiteral(
"worldFileMap" ) );
862 mRenderContext->setDpi( layoutElement.attribute( QStringLiteral(
"printResolution" ), QStringLiteral(
"300" ) ).toDouble() );
872 mItemsModel->rebuildZList();
876 void QgsLayout::removeLayoutItemPrivate(
QgsLayoutItem *item )
878 mItemsModel->setItemRemoved( item );
885 emit itemRemoved( item );
891 void QgsLayout::deleteAndRemoveMultiFrames()
893 qDeleteAll( mMultiFrames );
894 mMultiFrames.clear();
897 QPointF QgsLayout::minPointFromXml(
const QDomElement &elem )
const 899 double minX = std::numeric_limits<double>::max();
900 double minY = std::numeric_limits<double>::max();
901 const QDomNodeList itemList = elem.elementsByTagName( QStringLiteral(
"LayoutItem" ) );
903 for (
int i = 0; i < itemList.size(); ++i )
905 const QDomElement currentItemElem = itemList.at( i ).toElement();
910 minX = std::min( minX, layoutPoint.x() );
911 minY = std::min( minY, layoutPoint.y() );
914 return found ? QPointF( minX, minY ) : QPointF( 0, 0 );
919 int counter = mItemsModel->zOrderListSize();
920 const QList<QgsLayoutItem *> zOrderList = mItemsModel->zOrderList();
922 if ( addUndoCommands )
924 mUndoStack->beginMacro( tr(
"Change Item Stacking" ) );
930 if ( addUndoCommands )
932 mUndoStack->beginCommand( currentItem, QString() );
934 currentItem->setZValue( counter );
935 if ( addUndoCommands )
937 mUndoStack->endCommand();
942 if ( addUndoCommands )
944 mUndoStack->endMacro();
950 if ( layoutElement.nodeName() != QStringLiteral(
"Layout" ) )
957 return object->readXml( layoutElement, document, context );
960 blockSignals(
true );
961 readXmlLayoutSettings( layoutElement, document, context );
962 blockSignals(
false );
964 restore( mPageCollection.get() );
965 restore( &mSnapper );
966 restore( &mGridSettings );
976 QList< QgsLayoutItem * > newItems;
977 QList< QgsLayoutMultiFrame * > newMultiFrames;
982 int zOrderOffset = mItemsModel->zOrderListSize();
984 QPointF pasteShiftPos;
991 QPointF minItemPos = minPointFromXml( parentElement );
994 pasteShiftPos = *position - minItemPos;
997 pageNumber = mPageCollection->pageNumberForPoint( *position );
1003 const QDomNodeList multiFrameList = parentElement.elementsByTagName( QStringLiteral(
"LayoutMultiFrame" ) );
1004 for (
int i = 0; i < multiFrameList.size(); ++i )
1006 const QDomElement multiFrameElem = multiFrameList.at( i ).toElement();
1007 const int itemType = multiFrameElem.attribute( QStringLiteral(
"type" ) ).toInt();
1014 mf->readXml( multiFrameElem, document, context );
1017 mf->setCreateUndoCommands(
true );
1032 newMultiFrames << m;
1035 const QDomNodeList layoutItemList = parentElement.childNodes();
1036 for (
int i = 0; i < layoutItemList.size(); ++i )
1038 const QDomElement currentItemElem = layoutItemList.at( i ).toElement();
1039 if ( currentItemElem.nodeName() != QStringLiteral(
"LayoutItem" ) )
1042 const int itemType = currentItemElem.attribute( QStringLiteral(
"type" ) ).toInt();
1050 item->readXml( currentItemElem, document, context );
1056 item->attemptMove( posOnPage,
true,
false, pageNumber );
1060 item->attemptMoveBy( pasteShiftPos.x(), pasteShiftPos.y() );
1066 layoutItem->setZValue( layoutItem->zValue() + zOrderOffset );
1067 newItems << layoutItem;
1080 mf->finalizeRestoreFromXml();
1085 item->mTemplateUuid.clear();
1089 mf->mTemplateUuid.clear();
1095 mItemsModel->rebuildZList();
1105 void QgsLayout::itemBackgroundTaskCountChanged(
int count )
1112 mBackgroundTaskCount.insert( item, count );
1114 mBackgroundTaskCount.remove( item );
1118 for (
auto it = mBackgroundTaskCount.constBegin(); it != mBackgroundTaskCount.constEnd(); ++it )
1120 total += it.value();
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...
void removeItems()
Removes all items from the group (but does not delete them).
void setSelectedItem(QgsLayoutItem *item)
Clears any selected items and sets item as the current selection.
bool raiseItem(QgsLayoutItem *item, bool deferUpdate=false)
Raises an item up the z-order.
QgsLayoutGuideCollection & guides()
Returns a reference to the layout's guide collection, which manages page snap guides.
QgsLayoutItem * itemById(const QString &id) const
Returns a layout item given its id.
QRectF layoutBounds(bool ignorePages=false, double margin=0.0) const
Calculates the bounds of all non-gui items in the layout.
QgsLayout * clone() const
Creates a clone of the layout.
void backgroundTaskCountChanged(int total)
Emitted whenever the total number of background tasks running in items from the layout changes...
Base class for graphical items within a QgsLayout.
int type() const override
Returns a unique graphics item type identifier.
QgsLayoutMultiFrame * multiFrameByUuid(const QString &uuid, bool includeTemplateUuids=false) const
Returns the layout multiframe with matching uuid unique identifier, or nullptr if a matching multifra...
Base class for commands to undo/redo layout and layout object changes.
QgsLayoutUndoStack * undoStack()
Returns a pointer to the layout's undo stack, which manages undo/redo states for the layout and it's ...
friend class QgsLayoutModel
QVariant customProperty(const QString &key, const QVariant &defaultValue=QVariant()) const
Read a custom property from the layout.
QgsLayoutMeasurement convert(QgsLayoutMeasurement measurement, QgsUnitTypes::LayoutUnit targetUnits) const
Converts a measurement from one unit to another.
Stores information relating to the current reporting context for a layout.
QgsLayoutItemGroup * groupItems(const QList< QgsLayoutItem *> &items)
Creates a new group from a list of layout items and adds the group to the layout. ...
virtual bool readXml(const QDomElement &layoutElement, const QDomDocument &document, const QgsReadWriteContext &context)
Sets the collection's state from a DOM element.
An undo stack for QgsLayouts.
QgsLayoutItem * itemByUuid(const QString &uuid, bool includeTemplateUuids=false) const
Returns the layout item with matching uuid unique identifier, or nullptr if a matching item could not...
void loadFromSettings()
Loads grid settings from the application layout settings.
A container for grouping several QgsLayoutItems.
static QDomDocument convertCompositionTemplate(const QDomDocument &document, QgsProject *project)
Convert a composition template document to a layout template.
virtual void setSelected(bool selected)
Sets whether the item should be selected.
QVariant value(const QString &key, const QVariant &defaultValue=QVariant()) const
Returns value for the given key. If the key is not stored, default value will be used.
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.
static QgsExpressionContextScope * projectScope(const QgsProject *project)
Creates a new scope which contains variables and functions relating to a QGIS project.
void setUnits(QgsUnitTypes::LayoutUnit units)
Sets the native measurement units for the layout.
QList< QgsLayoutItem * > ungroupItems(QgsLayoutItemGroup *group)
Ungroups items by removing them from an item group and removing the group from the layout...
An interface for classes which can visit style entity (e.g.
void updateBounds()
Updates the scene bounds of the layout.
QgsLayoutRenderContext & renderContext()
Returns a reference to the layout's render context, which stores information relating to the current ...
void remove(const QString &key)
Remove a key (entry) from the store.
QList< QgsLayoutMultiFrame *> multiFrames() const
Returns a list of multi frames contained in the layout.
Abstract base class for layout items with the ability to distribute the content to several frames (Qg...
This class provides a method of storing points, consisting of an x and y coordinate, for use in QGIS layouts.
void layoutItems(QList< T *> &itemList) const
Returns a list of layout items of a specific type.
void removeCustomProperty(const QString &key)
Remove a custom property from the layout.
As part of the API refactoring and improvements which landed in the Processing API was substantially reworked from the x version This was done in order to allow much of the underlying Processing framework to be ported into c
void deselectAll()
Clears any selected items in the layout.
void updateZValues(bool addUndoCommands=true)
Resets the z-values of items based on their position in the internal z order list.
QgsVectorLayer * layer() const
Returns the vector layer associated with the layout's context.
static QgsLayoutItemRegistry * layoutItemRegistry()
Returns the application's layout item registry, used for layout item types.
Layout graphical items for displaying a map.
void backgroundTaskCountChanged(int count)
Emitted whenever the number of background tasks an item is executing changes.
void setValue(const QString &key, const QVariant &value)
Add an entry to the store. If the entry with the keys exists already, it will be overwritten.
static QgsExpressionContextScope * globalScope()
Creates a new scope which contains variables and functions relating to the global QGIS context...
void variablesChanged()
Emitted whenever the expression variables stored in the layout have been changed. ...
This class provides a method of storing measurements for use in QGIS layouts using a variety of diffe...
static bool isCompositionTemplate(const QDomDocument &document)
Check if the given document is a composition template.
static Q_INVOKABLE QgsUnitTypes::LayoutUnit decodeLayoutUnit(const QString &string, bool *ok=nullptr)
Decodes a layout unit from a string.
void refresh()
Forces the layout, and all items contained within it, to refresh.
QStringList customProperties() const
Returns list of keys stored in custom properties for the layout.
QList< QgsLayoutItem * > items() const
Returns a list of items contained by the group.
QgsLayoutPageCollection * pageCollection()
Returns a pointer to the layout's page collection, which stores and manages page items in the layout...
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
QList< QgsLayoutItem * > selectedLayoutItems(bool includeLockedItems=true)
Returns list of selected layout items.
QList< QgsLayoutItem *> loadFromTemplate(const QDomDocument &document, const QgsReadWriteContext &context, bool clearExisting=true, bool *ok=nullptr)
Load a layout template document.
void selectedItemChanged(QgsLayoutItem *selected)
Emitted whenever the selected item changes.
virtual void cleanup()
Called just before a batch of items are deleted, allowing them to run cleanup tasks.
void removeMultiFrame(QgsLayoutMultiFrame *multiFrame)
Removes a multiFrame from the layout (but does not delete it).
Stores and manages the snap guides used by a layout.
Encapsulates a QGIS project, including sets of map layers and their styles, layouts, annotations, canvases, etc.
int page() const
Returns the page the item is currently on, with the first page returning 0.
QString id() const
Returns the item's ID name.
virtual bool accept(QgsStyleEntityVisitorInterface *visitor) const
Accepts the specified style entity visitor, causing it to visit all style entities associated with th...
Base class for layouts, which can contain items such as maps, labels, scalebars, etc.
QStringList keys() const
Returns list of stored keys.
A manager for a collection of pages in a layout.
QRectF pageItemBounds(int page, bool visibleOnly=false) const
Returns the bounding box of the items contained on a specified page.
bool lowerItem(QgsLayoutItem *item, bool deferUpdate=false)
Lowers an item down the z-order.
static Q_INVOKABLE QString encodeUnit(QgsUnitTypes::DistanceUnit unit)
Encodes a distance unit to a string.
QgsLayoutModel * itemsModel()
Returns the items model attached to the layout.
friend class QgsLayoutItemAddItemCommand
virtual void finalizeRestoreFromXml()
Called after all pending items have been restored from XML.
QgsLayoutReportContext & reportContext()
Returns a reference to the layout's report context, which stores information relating to the current ...
friend class QgsLayoutUndoCommand
QgsExpressionContext createExpressionContext() const override
Creates an expression context relating to the layout's current state.
bool moveItemToBottom(QgsLayoutItem *item, bool deferUpdate=false)
Lowers an item down to the bottom of the z-order.
void clear()
Clears the layout.
QgsLayoutItemMap * referenceMap() const
Returns the map item which will be used to generate corresponding world files when the layout is expo...
QgsSignalBlocker< Object > whileBlocking(Object *object)
Temporarily blocks signals from a QObject while calling a single method from the object.
double length() const
Returns the length of the measurement.
bool saveAsTemplate(const QString &path, const QgsReadWriteContext &context) const
Saves the layout as a template at the given file path.
const QgsLayoutMeasurementConverter & measurementConverter() const
Returns the layout measurement converter to be used in the layout.
void removeLayoutItem(QgsLayoutItem *item)
Removes an item from the layout.
static QgsExpressionContextScope * layoutScope(const QgsLayout *layout)
Creates a new scope which contains variables and functions relating to a QgsLayout layout...
void refreshed()
Emitted when the layout has been refreshed and items should also be refreshed and updated...
friend class QgsLayoutItemGroupUndoCommand
void appendScope(QgsExpressionContextScope *scope)
Appends a scope to the end of the context.
virtual QString uuid() const
Returns the item identification string.
void addLayoutItem(QgsLayoutItem *item)
Adds an item to 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...
Stores information relating to the current rendering settings for a layout.
void setReferenceMap(QgsLayoutItemMap *map)
Sets the map item which will be used to generate corresponding world files when the layout is exporte...
An interface for layout objects which can be stored and read from DOM elements.
void initializeDefaults()
Initializes an empty layout, e.g.
QgsProject * project() const
The project associated with the layout.
void setCustomProperty(const QString &key, const QVariant &value)
Set a custom property for the layout.
LayoutUnit
Layout measurement units.
virtual QDomElement writeXml(QDomDocument &document, const QgsReadWriteContext &context) const
Returns the layout's state encapsulated in a DOM element.
bool isLocked() const
Returns true if the item is locked, and cannot be interacted with using the mouse.
QgsAbstractLayoutUndoCommand * createCommand(const QString &text, int id=0, QUndoCommand *parent=nullptr) override
Creates a new layout undo command with the specified text and parent.
void setPageSize(const QgsLayoutSize &size)
Sets the size of the page.
double convertToLayoutUnits(QgsLayoutMeasurement measurement) const
Converts a measurement into the layout's native units.
A model for items attached to a layout.
Manages snapping grids and preset snap lines in a layout, and handles snapping points to the nearest ...
static QgsExpressionContextScope * layerScope(const QgsMapLayer *layer)
Creates a new scope which contains variables and functions relating to a QgsMapLayer.
This class provides a method of storing sizes, consisting of a width and height, for use in QGIS layo...
void changed()
Emitted when properties of the layout change.
QgsLayoutItem * layoutItemAt(QPointF position, bool ignoreLocked=false) const
Returns the topmost layout item at a specified position.
bool moveItemToTop(QgsLayoutItem *item, bool deferUpdate=false)
Raises an item up to the top of the z-order.
bool accept(QgsStyleEntityVisitorInterface *visitor) const
Accepts the specified style entity visitor, causing it to visit all style entities associated with th...
QgsLayoutItem * itemByTemplateUuid(const QString &uuid) const
Returns the layout item with matching template uuid unique identifier, or nullptr if a matching item ...
void reloadSettings()
Refreshes the layout when global layout related options change.
void addMultiFrame(QgsLayoutMultiFrame *multiFrame)
Adds a multiFrame to the layout.
QgsLayout(QgsProject *project)
Construct a new layout linked to the specified project.
static QgsLayoutPoint decodePoint(const QString &string)
Decodes a point from a string.
Item representing the paper in a layout.
friend class QgsLayoutItemDeleteUndoCommand