QGIS API Documentation  3.20.0-Odense (decaadbb31)
qgsvectorlayer.h
Go to the documentation of this file.
1 
2 /***************************************************************************
3  -------------------
4  begin : Oct 29, 2003
5  copyright : (C) 2003 by Gary E.Sherman
6  email : sherman at mrcc.com
7  ***************************************************************************/
8 
9 /***************************************************************************
10  * *
11  * This program is free software; you can redistribute it and/or modify *
12  * it under the terms of the GNU General Public License as published by *
13  * the Free Software Foundation; either version 2 of the License, or *
14  * (at your option) any later version. *
15  * *
16  ***************************************************************************/
17 
18 #ifndef QGSVECTORLAYER_H
19 #define QGSVECTORLAYER_H
20 
21 
22 #include "qgis_core.h"
23 #include <QMap>
24 #include <QSet>
25 #include <QList>
26 #include <QStringList>
27 #include <QFont>
28 #include <QMutex>
29 
30 #include "qgis.h"
31 #include "qgsmaplayer.h"
32 #include "qgsfeature.h"
33 #include "qgsfeaturerequest.h"
34 #include "qgsfeaturesource.h"
35 #include "qgsfields.h"
36 #include "qgsvectordataprovider.h"
39 #include "qgseditformconfig.h"
41 #include "qgsaggregatecalculator.h"
42 #include "qgsfeatureiterator.h"
45 #include "qgsexpressioncontext.h"
46 
47 class QPainter;
48 class QImage;
49 
51 class QgsActionManager;
53 class QgsCurve;
55 class QgsDiagramRenderer;
58 class QgsFeatureRenderer;
59 class QgsGeometry;
60 class QgsGeometryVertexIndex;
61 class QgsMapToPixel;
62 class QgsRectangle;
63 class QgsRectangle;
64 class QgsRelation;
65 class QgsWeakRelation;
66 class QgsRelationManager;
69 class QgsSymbol;
76 class QgsPoint;
77 class QgsFeedback;
79 class QgsAuxiliaryLayer;
80 class QgsGeometryOptions;
84 
85 typedef QList<int> QgsAttributeList;
86 typedef QSet<int> QgsAttributeIds;
87 
88 // TODO QGIS4: Remove virtual from non-inherited methods (like isModified)
89 
393 {
394  Q_OBJECT
395 
396  Q_PROPERTY( QString subsetString READ subsetString WRITE setSubsetString NOTIFY subsetStringChanged )
397  Q_PROPERTY( QString displayExpression READ displayExpression WRITE setDisplayExpression NOTIFY displayExpressionChanged )
398  Q_PROPERTY( QString mapTipTemplate READ mapTipTemplate WRITE setMapTipTemplate NOTIFY mapTipTemplateChanged )
399  Q_PROPERTY( QgsEditFormConfig editFormConfig READ editFormConfig WRITE setEditFormConfig NOTIFY editFormConfigChanged )
400  Q_PROPERTY( bool readOnly READ isReadOnly WRITE setReadOnly NOTIFY readOnlyChanged )
401  Q_PROPERTY( bool supportsEditing READ supportsEditing NOTIFY supportsEditingChanged )
402 
403  public:
404 
407  {
408  Success = 0,
409  EmptyGeometry = 1,
410  EditFailed = 2,
411  FetchFeatureFailed = 3,
412  InvalidLayer = 4,
413  };
414  Q_ENUM( EditResult )
415 
416 
418  {
423  };
424  Q_ENUM( SelectBehavior )
425 
426 
431  {
432 
436  explicit LayerOptions( bool loadDefaultStyle = true,
437  bool readExtentFromXml = false )
438  : loadDefaultStyle( loadDefaultStyle )
439  , readExtentFromXml( readExtentFromXml )
440  {}
441 
446  explicit LayerOptions( const QgsCoordinateTransformContext &transformContext,
447  bool loadDefaultStyle = true,
448  bool readExtentFromXml = false
449  )
450  : loadDefaultStyle( loadDefaultStyle )
451  , readExtentFromXml( readExtentFromXml )
452  , transformContext( transformContext )
453  {}
454 
456  bool loadDefaultStyle = true;
457 
462  bool readExtentFromXml = false;
463 
469 
482 
495 
509  bool skipCrsValidation = false;
510 
511  };
512 
517  struct CORE_EXPORT DeleteContext
518  {
519 
523  explicit DeleteContext( bool cascade = false, QgsProject *project = nullptr ): cascade( cascade ), project( project ) {}
524 
531  QList<QgsVectorLayer *> handledLayers( bool includeAuxiliaryLayers = true ) const;
532 
536  QgsFeatureIds handledFeatures( QgsVectorLayer *layer ) const;
537 
538  QMap<QgsVectorLayer *, QgsFeatureIds> mHandledFeatures SIP_SKIP;
539  bool cascade;
541  };
542 
556  explicit QgsVectorLayer( const QString &path = QString(), const QString &baseName = QString(),
557  const QString &providerLib = "ogr", const QgsVectorLayer::LayerOptions &options = QgsVectorLayer::LayerOptions() );
558 
559  ~QgsVectorLayer() override;
560 
562  QgsVectorLayer( const QgsVectorLayer &rhs ) = delete;
564  QgsVectorLayer &operator=( QgsVectorLayer const &rhs ) = delete;
565 
566 #ifdef SIP_RUN
567  SIP_PYOBJECT __repr__();
568  % MethodCode
569  QString str = QStringLiteral( "<QgsVectorLayer: '%1' (%2)>" ).arg( sipCpp->name(), sipCpp->dataProvider() ? sipCpp->dataProvider()->name() : QStringLiteral( "Invalid" ) );
570  sipRes = PyUnicode_FromString( str.toUtf8().constData() );
571  % End
572 #endif
573 
582  QgsVectorLayer *clone() const override SIP_FACTORY;
583 
588  QString storageType() const;
589 
593  QString capabilitiesString() const;
594 
598  QString dataComment() const;
599 
607  QString displayField() const;
608 
616  void setDisplayExpression( const QString &displayExpression );
617 
624  QString displayExpression() const;
625 
626  QgsVectorDataProvider *dataProvider() FINAL;
627  const QgsVectorDataProvider *dataProvider() const FINAL SIP_SKIP;
628 
632  QgsMapLayerTemporalProperties *temporalProperties() override;
633 
644  void setProviderEncoding( const QString &encoding );
645 
647  void setCoordinateSystem();
648 
654  bool addJoin( const QgsVectorLayerJoinInfo &joinInfo );
655 
660  bool removeJoin( const QString &joinLayerId );
661 
666  QgsVectorLayerJoinBuffer *joinBuffer() { return mJoinBuffer; }
667 
672  const QgsVectorLayerJoinBuffer *joinBuffer() const { return mJoinBuffer; } SIP_SKIP;
673 
674  const QList<QgsVectorLayerJoinInfo> vectorJoins() const;
675 
684  bool setDependencies( const QSet<QgsMapLayerDependency> &layers ) FINAL;
685 
693  QSet<QgsMapLayerDependency> dependencies() const FINAL;
694 
705  int addExpressionField( const QString &exp, const QgsField &fld );
706 
714  void removeExpressionField( int index );
715 
725  QString expressionField( int index ) const;
726 
736  void updateExpressionField( int index, const QString &exp );
737 
744  QgsActionManager *actions() { return mActions; }
745 
751  const QgsActionManager *actions() const SIP_SKIP { return mActions; }
752 
757  QgsVectorLayerServerProperties *serverProperties() const { return mServerProperties.get(); }
758 
764  int selectedFeatureCount() const;
765 
775  Q_INVOKABLE void selectByRect( QgsRectangle &rect, QgsVectorLayer::SelectBehavior behavior = QgsVectorLayer::SetSelection );
776 
786  Q_INVOKABLE void selectByExpression( const QString &expression, QgsVectorLayer::SelectBehavior behavior = QgsVectorLayer::SetSelection );
787 
798  Q_INVOKABLE void selectByIds( const QgsFeatureIds &ids, QgsVectorLayer::SelectBehavior behavior = QgsVectorLayer::SetSelection );
799 
811  Q_INVOKABLE void modifySelection( const QgsFeatureIds &selectIds, const QgsFeatureIds &deselectIds );
812 
814  Q_INVOKABLE void invertSelection();
815 
817  Q_INVOKABLE void selectAll();
818 
826  Q_INVOKABLE void invertSelectionInRectangle( QgsRectangle &rect );
827 
840  Q_INVOKABLE QgsFeatureList selectedFeatures() const;
841 
857  QgsFeatureIterator getSelectedFeatures( QgsFeatureRequest request = QgsFeatureRequest() ) const;
858 
866  Q_INVOKABLE const QgsFeatureIds &selectedFeatureIds() const;
867 
869  Q_INVOKABLE QgsRectangle boundingBoxOfSelected() const;
870 
878  bool labelsEnabled() const;
879 
889  void setLabelsEnabled( bool enabled );
890 
896  bool diagramsEnabled() const;
897 
899  void setDiagramRenderer( QgsDiagramRenderer *r SIP_TRANSFER );
900  const QgsDiagramRenderer *diagramRenderer() const { return mDiagramRenderer; }
901 
902  void setDiagramLayerSettings( const QgsDiagramLayerSettings &s );
903  const QgsDiagramLayerSettings *diagramLayerSettings() const { return mDiagramLayerSettings; }
904 
911  QgsFeatureRenderer *renderer() { return mRenderer; }
912 
920  const QgsFeatureRenderer *renderer() const SIP_SKIP { return mRenderer; }
921 
928  void setRenderer( QgsFeatureRenderer *r SIP_TRANSFER );
929 
939  void addFeatureRendererGenerator( QgsFeatureRendererGenerator *generator SIP_TRANSFER );
940 
950  void removeFeatureRendererGenerator( const QString &id );
951 
959  QList< const QgsFeatureRendererGenerator * > featureRendererGenerators() const;
960 
962  Q_INVOKABLE QgsWkbTypes::GeometryType geometryType() const;
963 
965  Q_INVOKABLE QgsWkbTypes::Type wkbType() const FINAL;
966 
967  QgsCoordinateReferenceSystem sourceCrs() const FINAL;
968  QString sourceName() const FINAL;
969 
974  bool readXml( const QDomNode &layer_node, QgsReadWriteContext &context ) FINAL;
975 
980  bool writeXml( QDomNode &layer_node, QDomDocument &doc, const QgsReadWriteContext &context ) const FINAL;
981 
982  QString encodedSource( const QString &source, const QgsReadWriteContext &context ) const FINAL;
983  QString decodedSource( const QString &source, const QString &provider, const QgsReadWriteContext &context ) const FINAL;
984 
989  void resolveReferences( QgsProject *project ) FINAL;
990 
999  virtual void saveStyleToDatabase( const QString &name, const QString &description,
1000  bool useAsDefault, const QString &uiFileContent,
1001  QString &msgError SIP_OUT );
1002 
1012  virtual int listStylesInDatabase( QStringList &ids SIP_OUT, QStringList &names SIP_OUT,
1013  QStringList &descriptions SIP_OUT, QString &msgError SIP_OUT );
1014 
1018  virtual QString getStyleFromDatabase( const QString &styleId, QString &msgError SIP_OUT );
1019 
1027  virtual bool deleteStyleFromDatabase( const QString &styleId, QString &msgError SIP_OUT );
1028 
1036  virtual QString loadNamedStyle( const QString &theURI, bool &resultFlag SIP_OUT, bool loadFromLocalDb,
1037  QgsMapLayer::StyleCategories categories = QgsMapLayer::AllStyleCategories );
1038 
1043  QString loadNamedStyle( const QString &theURI, bool &resultFlag SIP_OUT,
1044  QgsMapLayer::StyleCategories categories = QgsMapLayer::AllStyleCategories ) FINAL;
1045 
1059  bool loadAuxiliaryLayer( const QgsAuxiliaryStorage &storage, const QString &key = QString() );
1060 
1070  void setAuxiliaryLayer( QgsAuxiliaryLayer *layer SIP_TRANSFER = nullptr );
1071 
1077  QgsAuxiliaryLayer *auxiliaryLayer();
1078 
1084  const QgsAuxiliaryLayer *auxiliaryLayer() const SIP_SKIP;
1085 
1086  bool readSymbology( const QDomNode &layerNode, QString &errorMessage,
1087  QgsReadWriteContext &context, QgsMapLayer::StyleCategories categories = QgsMapLayer::AllStyleCategories ) FINAL;
1088  bool readStyle( const QDomNode &node, QString &errorMessage,
1089  QgsReadWriteContext &context, QgsMapLayer::StyleCategories categories = QgsMapLayer::AllStyleCategories ) FINAL;
1090  bool writeSymbology( QDomNode &node, QDomDocument &doc, QString &errorMessage,
1091  const QgsReadWriteContext &context, QgsMapLayer::StyleCategories categories = QgsMapLayer::AllStyleCategories ) const FINAL;
1092  bool writeStyle( QDomNode &node, QDomDocument &doc, QString &errorMessage,
1093  const QgsReadWriteContext &context, QgsMapLayer::StyleCategories categories = QgsMapLayer::AllStyleCategories ) const FINAL;
1094 
1103  bool writeSld( QDomNode &node, QDomDocument &doc, QString &errorMessage, const QVariantMap &props = QVariantMap() ) const;
1104 
1105  bool readSld( const QDomNode &node, QString &errorMessage ) FINAL;
1106 
1112  long long featureCount( const QString &legendKey ) const;
1113 
1120  QgsFeatureIds symbolFeatureIds( const QString &legendKey ) const;
1121 
1132  FeatureAvailability hasFeatures() const FINAL;
1133 
1134 
1135  QString loadDefaultStyle( bool &resultFlag SIP_OUT ) FINAL;
1136 
1150  QgsVectorLayerFeatureCounter *countSymbolFeatures( bool storeSymbolFids = false );
1151 
1159  virtual bool setSubsetString( const QString &subset );
1160 
1165  virtual QString subsetString() const;
1166 
1172  QgsFeatureIterator getFeatures( const QgsFeatureRequest &request = QgsFeatureRequest() ) const FINAL;
1173 
1177  inline QgsFeatureIterator getFeatures( const QString &expression )
1178  {
1179  return getFeatures( QgsFeatureRequest( expression ) );
1180  }
1181 
1186  inline QgsFeature getFeature( QgsFeatureId fid ) const
1187  {
1188  QgsFeature feature;
1189  getFeatures( QgsFeatureRequest( fid ) ).nextFeature( feature );
1190  return feature;
1191  }
1192 
1197  QgsGeometry getGeometry( QgsFeatureId fid ) const;
1198 
1203  {
1204  return getFeatures( QgsFeatureRequest( fids ) );
1205  }
1206 
1210  inline QgsFeatureIterator getFeatures( const QgsRectangle &rectangle )
1211  {
1212  return getFeatures( QgsFeatureRequest( rectangle ) );
1213  }
1214 
1215  bool addFeature( QgsFeature &feature, QgsFeatureSink::Flags flags = QgsFeatureSink::Flags() ) FINAL;
1216 
1242  bool updateFeature( QgsFeature &feature, bool skipDefaultValues = false );
1243 
1255  bool insertVertex( double x, double y, QgsFeatureId atFeatureId, int beforeVertex );
1256 
1268  bool insertVertex( const QgsPoint &point, QgsFeatureId atFeatureId, int beforeVertex );
1269 
1280  bool moveVertex( double x, double y, QgsFeatureId atFeatureId, int atVertex );
1281 
1292  bool moveVertex( const QgsPoint &p, QgsFeatureId atFeatureId, int atVertex ) SIP_PYNAME( moveVertexV2 );
1293 
1304  EditResult deleteVertex( QgsFeatureId featureId, int vertex );
1305 
1313  Q_INVOKABLE bool deleteSelectedFeatures( int *deletedCount = nullptr, DeleteContext *context = nullptr );
1314 
1335  Q_DECL_DEPRECATED QgsGeometry::OperationResult addRing( const QVector<QgsPointXY> &ring, QgsFeatureId *featureId = nullptr ) SIP_DEPRECATED;
1336 
1337 
1357  Q_INVOKABLE QgsGeometry::OperationResult addRing( const QgsPointSequence &ring, QgsFeatureId *featureId = nullptr );
1358 
1379  Q_INVOKABLE QgsGeometry::OperationResult addRing( QgsCurve *ring SIP_TRANSFER, QgsFeatureId *featureId = nullptr ) SIP_PYNAME( addCurvedRing );
1380 
1400  Q_DECL_DEPRECATED QgsGeometry::OperationResult addPart( const QList<QgsPointXY> &ring ) SIP_DEPRECATED;
1401 
1402 #if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
1403 
1424  Q_DECL_DEPRECATED QgsGeometry::OperationResult addPart( const QVector<QgsPointXY> &ring ) SIP_PYNAME( addPartV2 ) SIP_DEPRECATED;
1425 #endif
1426 
1446  Q_INVOKABLE QgsGeometry::OperationResult addPart( const QgsPointSequence &ring ) SIP_PYNAME( addPartV2 );
1447 
1455  Q_INVOKABLE QgsGeometry::OperationResult addPart( QgsCurve *ring SIP_TRANSFER ) SIP_PYNAME( addCurvedPart );
1456 
1468  Q_INVOKABLE int translateFeature( QgsFeatureId featureId, double dx, double dy );
1469 
1490  Q_DECL_DEPRECATED QgsGeometry::OperationResult splitParts( const QVector<QgsPointXY> &splitLine, bool topologicalEditing = false ) SIP_DEPRECATED;
1491 
1511  Q_INVOKABLE QgsGeometry::OperationResult splitParts( const QgsPointSequence &splitLine, bool topologicalEditing = false );
1512 
1533  Q_DECL_DEPRECATED QgsGeometry::OperationResult splitFeatures( const QVector<QgsPointXY> &splitLine, bool topologicalEditing = false ) SIP_DEPRECATED;
1534 
1554  Q_INVOKABLE QgsGeometry::OperationResult splitFeatures( const QgsPointSequence &splitLine, bool topologicalEditing = false );
1555 
1578  Q_INVOKABLE QgsGeometry::OperationResult splitFeatures( const QgsCurve *curve, QgsPointSequence &topologyTestPoints SIP_OUT, bool preserveCircular = false, bool topologicalEditing = false );
1579 
1590  int addTopologicalPoints( const QgsGeometry &geom );
1591 
1605  Q_DECL_DEPRECATED int addTopologicalPoints( const QgsPointXY &p ) SIP_DEPRECATED;
1606 
1620  int addTopologicalPoints( const QgsPoint &p );
1621 
1635  int addTopologicalPoints( const QgsPointSequence &ps );
1636 
1643  const QgsAbstractVectorLayerLabeling *labeling() const SIP_SKIP { return mLabeling; }
1644 
1651  QgsAbstractVectorLayerLabeling *labeling() { return mLabeling; }
1652 
1657  void setLabeling( QgsAbstractVectorLayerLabeling *labeling SIP_TRANSFER );
1658 
1660  bool isEditable() const FINAL;
1661 
1663  bool isSpatial() const FINAL;
1664 
1666  virtual bool isModified() const;
1667 
1674  bool isAuxiliaryField( int index, int &srcIndex ) const;
1675 
1677  void reload() FINAL;
1678 
1683  QgsMapLayerRenderer *createMapRenderer( QgsRenderContext &rendererContext ) FINAL SIP_FACTORY;
1684 
1685  QgsRectangle extent() const FINAL;
1686  QgsRectangle sourceExtent() const FINAL;
1687 
1694  QgsFields fields() const FINAL;
1695 
1699  inline QgsAttributeList attributeList() const { return mFields.allAttributesList(); }
1700 
1704  QgsAttributeList primaryKeyAttributes() const;
1705 
1711  long long featureCount() const FINAL;
1712 
1717  bool setReadOnly( bool readonly = true );
1718 
1724  bool supportsEditing();
1725 
1746  bool changeGeometry( QgsFeatureId fid, QgsGeometry &geometry, bool skipDefaultValue = false );
1747 
1778  bool changeAttributeValue( QgsFeatureId fid, int field, const QVariant &newValue, const QVariant &oldValue = QVariant(), bool skipDefaultValues = false );
1779 
1815  bool changeAttributeValues( QgsFeatureId fid, const QgsAttributeMap &newValues, const QgsAttributeMap &oldValues = QgsAttributeMap(), bool skipDefaultValues = false );
1816 
1826  bool addAttribute( const QgsField &field );
1827 
1833  void setFieldAlias( int index, const QString &aliasString );
1834 
1840  void removeFieldAlias( int index );
1841 
1852  bool renameAttribute( int index, const QString &newName );
1853 
1860  QString attributeAlias( int index ) const;
1861 
1863  QString attributeDisplayName( int index ) const;
1864 
1866  QgsStringMap attributeAliases() const;
1867 
1872  Q_DECL_DEPRECATED QSet<QString> excludeAttributesWms() const SIP_DEPRECATED;
1873 
1878  Q_DECL_DEPRECATED void setExcludeAttributesWms( const QSet<QString> &att ) SIP_DEPRECATED;
1879 
1884  Q_DECL_DEPRECATED QSet<QString> excludeAttributesWfs() const SIP_DEPRECATED;
1885 
1890  Q_DECL_DEPRECATED void setExcludeAttributesWfs( const QSet<QString> &att ) SIP_DEPRECATED;
1891 
1900  virtual bool deleteAttribute( int attr );
1901 
1909  bool deleteAttributes( const QList<int> &attrs );
1910 
1911  bool addFeatures( QgsFeatureList &features, QgsFeatureSink::Flags flags = QgsFeatureSink::Flags() ) FINAL;
1912 
1923  bool deleteFeature( QgsFeatureId fid, DeleteContext *context = nullptr );
1924 
1938  bool deleteFeatures( const QgsFeatureIds &fids, DeleteContext *context = nullptr );
1939 
1963  Q_INVOKABLE bool commitChanges( bool stopEditing = true );
1964 
1970  QStringList commitErrors() const;
1971 
1981  Q_INVOKABLE bool rollBack( bool deleteBuffer = true );
1982 
1989  QList<QgsRelation> referencingRelations( int idx ) const;
1990 
1997  QList<QgsWeakRelation> weakRelations( ) const SIP_SKIP;
1998 
1999 
2001  Q_INVOKABLE QgsVectorLayerEditBuffer *editBuffer() { return mEditBuffer; }
2002 
2007  const QgsVectorLayerEditBuffer *editBuffer() const SIP_SKIP { return mEditBuffer; }
2008 
2013  void beginEditCommand( const QString &text );
2014 
2016  void endEditCommand();
2017 
2019  void destroyEditCommand();
2020 
2023  {
2026  NoMarker
2027  };
2028 
2033  Q_DECL_DEPRECATED static void drawVertexMarker( double x, double y, QPainter &p, QgsVectorLayer::VertexMarkerType type, int vertexSize );
2034 
2043  void updateFields();
2044 
2059  QVariant defaultValue( int index, const QgsFeature &feature = QgsFeature(),
2060  QgsExpressionContext *context = nullptr ) const;
2061 
2073  void setDefaultValueDefinition( int index, const QgsDefaultValue &definition );
2074 
2085  QgsDefaultValue defaultValueDefinition( int index ) const;
2086 
2094  QgsFieldConstraints::Constraints fieldConstraints( int fieldIndex ) const;
2095 
2101  QMap< QgsFieldConstraints::Constraint, QgsFieldConstraints::ConstraintStrength> fieldConstraintsAndStrength( int fieldIndex ) const;
2102 
2112 
2120  void removeFieldConstraint( int index, QgsFieldConstraints::Constraint constraint );
2121 
2129  QString constraintExpression( int index ) const;
2130 
2138  QString constraintDescription( int index ) const;
2139 
2148  void setConstraintExpression( int index, const QString &expression, const QString &description = QString() );
2149 
2155  void setFieldConfigurationFlags( int index, QgsField::ConfigurationFlags flags ) SIP_SKIP;
2156 
2161  void setFieldConfigurationFlag( int index, QgsField::ConfigurationFlag flag, bool active ) SIP_SKIP;
2162 
2168  QgsField::ConfigurationFlags fieldConfigurationFlags( int index ) const SIP_SKIP;
2169 
2173  void setEditorWidgetSetup( int index, const QgsEditorWidgetSetup &setup );
2174 
2181  QgsEditorWidgetSetup editorWidgetSetup( int index ) const;
2182 
2194  QSet<QVariant> uniqueValues( int fieldIndex, int limit = -1 ) const FINAL;
2195 
2209  QStringList uniqueStringsMatching( int index, const QString &substring, int limit = -1,
2210  QgsFeedback *feedback = nullptr ) const;
2211 
2226  QVariant minimumValue( int index ) const FINAL;
2227 
2242  QVariant maximumValue( int index ) const FINAL;
2243 
2244 
2264  void minimumAndMaximumValue( int index, QVariant &minimum SIP_OUT, QVariant &maximum SIP_OUT ) const;
2265 
2278  QVariant aggregate( QgsAggregateCalculator::Aggregate aggregate,
2279  const QString &fieldOrExpression,
2280  const QgsAggregateCalculator::AggregateParameters &parameters = QgsAggregateCalculator::AggregateParameters(),
2281  QgsExpressionContext *context = nullptr,
2282  bool *ok = nullptr,
2283  QgsFeatureIds *fids = nullptr ) const;
2284 
2286  void setFeatureBlendMode( QPainter::CompositionMode blendMode );
2288  QPainter::CompositionMode featureBlendMode() const;
2289 
2290  QString htmlMetadata() const FINAL;
2291 
2296  void setSimplifyMethod( const QgsVectorSimplifyMethod &simplifyMethod ) { mSimplifyMethod = simplifyMethod; }
2297 
2302  inline const QgsVectorSimplifyMethod &simplifyMethod() const { return mSimplifyMethod; }
2303 
2309  bool simplifyDrawingCanbeApplied( const QgsRenderContext &renderContext, QgsVectorSimplifyMethod::SimplifyHint simplifyHint ) const;
2310 
2318  QgsConditionalLayerStyles *conditionalStyles() const;
2319 
2324  QgsAttributeTableConfig attributeTableConfig() const;
2325 
2330  void setAttributeTableConfig( const QgsAttributeTableConfig &attributeTableConfig );
2331 
2339  QString mapTipTemplate() const;
2340 
2348  void setMapTipTemplate( const QString &mapTipTemplate );
2349 
2351 
2352  QgsExpressionContextScope *createExpressionContextScope() const FINAL SIP_FACTORY;
2353 
2361  QgsEditFormConfig editFormConfig() const;
2362 
2369  void setEditFormConfig( const QgsEditFormConfig &editFormConfig );
2370 
2378  void setReadExtentFromXml( bool readExtentFromXml );
2379 
2387  bool readExtentFromXml() const;
2388 
2394  bool isEditCommandActive() const { return mEditCommandActive; }
2395 
2401  QgsGeometryOptions *geometryOptions() const;
2402 
2420  bool allowCommit() const SIP_SKIP;
2421 
2439  void setAllowCommit( bool allowCommit ) SIP_SKIP;
2440 
2446  QgsStoredExpressionManager *storedExpressionManager() { return mStoredExpressionManager; }
2447 
2448  public slots:
2449 
2457  void select( QgsFeatureId featureId );
2458 
2466  Q_INVOKABLE void select( const QgsFeatureIds &featureIds );
2467 
2475  void deselect( QgsFeatureId featureId );
2476 
2484  Q_INVOKABLE void deselect( const QgsFeatureIds &featureIds );
2485 
2492  Q_INVOKABLE void removeSelection();
2493 
2504  void reselect();
2505 
2512  virtual void updateExtents( bool force = false );
2513 
2528  Q_INVOKABLE bool startEditing();
2529 
2535  virtual void setTransformContext( const QgsCoordinateTransformContext &transformContext ) override;
2536 
2537  SpatialIndexPresence hasSpatialIndex() const override;
2538 
2539  bool accept( QgsStyleEntityVisitorInterface *visitor ) const override;
2540 
2541  signals:
2542 
2550  void selectionChanged( const QgsFeatureIds &selected, const QgsFeatureIds &deselected, bool clearAndSelect );
2551 
2554 
2561 
2563  void beforeModifiedCheck() const;
2564 
2567 
2570 
2573 
2579  void beforeCommitChanges( bool stopEditing );
2580 
2583 
2589 
2595 
2604  void attributeAdded( int idx );
2605 
2612  void beforeAddingExpressionField( const QString &fieldName );
2613 
2622  void attributeDeleted( int idx );
2623 
2631 
2638 
2648 
2658  void featuresDeleted( const QgsFeatureIds &fids );
2659 
2665 
2671 
2680  void attributeValueChanged( QgsFeatureId fid, int idx, const QVariant &value );
2681 
2689  void geometryChanged( QgsFeatureId fid, const QgsGeometry &geometry );
2690 
2692  void committedAttributesDeleted( const QString &layerId, const QgsAttributeList &deletedAttributes );
2694  void committedAttributesAdded( const QString &layerId, const QList<QgsField> &addedAttributes );
2696  void committedFeaturesAdded( const QString &layerId, const QgsFeatureList &addedFeatures );
2698  void committedFeaturesRemoved( const QString &layerId, const QgsFeatureIds &deletedFeatureIds );
2700  void committedAttributeValuesChanges( const QString &layerId, const QgsChangedAttributesMap &changedAttributesValues );
2702  void committedGeometriesChanges( const QString &layerId, const QgsGeometryMap &changedGeometries );
2703 
2705  void labelingFontNotFound( QgsVectorLayer *layer, const QString &fontfamily );
2706 
2708  void featureBlendModeChanged( QPainter::CompositionMode blendMode );
2709 
2715  void editCommandStarted( const QString &text );
2716 
2723 
2730 
2740  void readCustomSymbology( const QDomElement &element, QString &errorMessage );
2741 
2751  void writeCustomSymbology( QDomElement &element, QDomDocument &doc, QString &errorMessage ) const;
2752 
2759 
2766 
2770  void raiseError( const QString &msg );
2771 
2778 
2786 
2793 
2800 
2801  protected:
2803  void setExtent( const QgsRectangle &rect ) FINAL;
2804 
2805  private slots:
2806  void invalidateSymbolCountedFlag();
2807  void onFeatureCounterCompleted();
2808  void onFeatureCounterTerminated();
2809  void onJoinedFieldsChanged();
2810  void onFeatureDeleted( QgsFeatureId fid );
2811  void onRelationsLoaded();
2812  void onSymbolsCounted();
2813  void onDirtyTransaction( const QString &sql, const QString &name );
2814  void emitDataChanged();
2815  void onAfterCommitChangesDependency();
2816 
2817  private:
2818  void updateDefaultValues( QgsFeatureId fid, QgsFeature feature = QgsFeature() );
2819 
2823  bool isReadOnly() const FINAL;
2824 
2831  bool setDataProvider( QString const &provider, const QgsDataProvider::ProviderOptions &options, QgsDataProvider::ReadFlags flags = QgsDataProvider::ReadFlags() );
2832 
2844  void setDataSourcePrivate( const QString &dataSource, const QString &baseName, const QString &provider, const QgsDataProvider::ProviderOptions &options, QgsDataProvider::ReadFlags flags ) override;
2845 
2847  void readSldLabeling( const QDomNode &node );
2848 
2850  bool readSldTextSymbolizer( const QDomNode &node, QgsPalLayerSettings &settings ) const;
2851 
2853  QgsAbstractVectorLayerLabeling *readLabelingFromCustomProperties();
2854 
2855  bool deleteFeatureCascade( QgsFeatureId fid, DeleteContext *context = nullptr );
2856 
2857 #ifdef SIP_RUN
2858  QgsVectorLayer( const QgsVectorLayer &rhs );
2859 #endif
2861  void minimumOrMaximumValue( int index, QVariant *minimum, QVariant *maximum ) const;
2862 
2863  QgsConditionalLayerStyles *mConditionalStyles = nullptr;
2864 
2866  QgsVectorDataProvider *mDataProvider = nullptr;
2867 
2869  QgsVectorLayerTemporalProperties *mTemporalProperties = nullptr;
2870 
2872  QString mDisplayExpression;
2873 
2874  QString mMapTipTemplate;
2875 
2877  QgsActionManager *mActions = nullptr;
2878 
2880  bool mReadOnly = false;
2881 
2887  QgsFeatureIds mSelectedFeatureIds;
2888 
2892  QgsFeatureIds mPreviousSelectedFeatureIds;
2893 
2895  QgsFields mFields;
2896 
2898  QgsStringMap mAttributeAliasMap;
2899 
2901  QMap<QString, QgsDefaultValue> mDefaultExpressionMap;
2902 
2904  QSet<int> mDefaultValueOnUpdateFields;
2905 
2907  QMap< QString, QgsFieldConstraints::Constraints > mFieldConstraints;
2908 
2910  QMap< QPair< QString, QgsFieldConstraints::Constraint >, QgsFieldConstraints::ConstraintStrength > mFieldConstraintStrength;
2911 
2913  QMap< QString, QPair< QString, QString > > mFieldConstraintExpressions;
2914 
2915  QMap< QString, QgsField::ConfigurationFlags > mFieldConfigurationFlags;
2916  QMap< QString, QgsEditorWidgetSetup > mFieldWidgetSetups;
2917 
2919  QgsEditFormConfig mEditFormConfig;
2920 
2923 
2925  QgsFeatureRenderer *mRenderer = nullptr;
2926 
2928  QgsVectorSimplifyMethod mSimplifyMethod;
2929 
2931  QgsAbstractVectorLayerLabeling *mLabeling = nullptr;
2932 
2934  bool mLabelsEnabled = false;
2935 
2937  bool mLabelFontNotFoundNotified = false;
2938 
2940  QPainter::CompositionMode mFeatureBlendMode = QPainter::CompositionMode_SourceOver;
2941 
2943  bool mVertexMarkerOnlyForSelection = false;
2944 
2945  QStringList mCommitErrors;
2946 
2948  QgsVectorLayerEditBuffer *mEditBuffer = nullptr;
2951 
2952  //stores information about joined layers
2953  QgsVectorLayerJoinBuffer *mJoinBuffer = nullptr;
2954 
2956  std::unique_ptr< QgsVectorLayerServerProperties > mServerProperties;
2957 
2959  QgsExpressionFieldBuffer *mExpressionFieldBuffer = nullptr;
2960 
2961  //diagram rendering object. 0 if diagram drawing is disabled
2962  QgsDiagramRenderer *mDiagramRenderer = nullptr;
2963 
2964  //stores infos about diagram placement (placement type, priority, position distance)
2965  QgsDiagramLayerSettings *mDiagramLayerSettings = nullptr;
2966 
2967  mutable bool mValidExtent = false;
2968  mutable bool mLazyExtent = true;
2969 
2971  std::unique_ptr<QgsAuxiliaryLayer> mAuxiliaryLayer;
2972 
2974  QString mAuxiliaryLayerKey;
2975 
2976  // Features in renderer classes counted
2977  bool mSymbolFeatureCounted = false;
2978 
2979  // Feature counts for each renderer legend key
2980  QHash<QString, long long> mSymbolFeatureCountMap;
2981  QHash<QString, QgsFeatureIds> mSymbolFeatureIdMap;
2982 
2984  bool mEditCommandActive = false;
2985 
2986  bool mReadExtentFromXml;
2987  QgsRectangle mXmlExtent;
2988 
2989  QgsFeatureIds mDeletedFids;
2990 
2991  QgsAttributeTableConfig mAttributeTableConfig;
2992 
2993  mutable QMutex mFeatureSourceConstructorMutex;
2994 
2995  QgsVectorLayerFeatureCounter *mFeatureCounter = nullptr;
2996 
2997  std::unique_ptr<QgsGeometryOptions> mGeometryOptions;
2998 
2999  bool mAllowCommit = true;
3000 
3002  QgsStoredExpressionManager *mStoredExpressionManager = nullptr;
3003 
3005 
3007  bool mDataChangedFired = false;
3008 
3009  QList<QgsWeakRelation> mWeakRelations;
3010 
3011  bool mSetLegendFromStyle = false;
3012 
3013  QList< QgsFeatureRendererGenerator * > mRendererGenerators;
3014 };
3015 
3016 
3017 
3018 // clazy:excludeall=qstring-allocations
3019 
3020 #endif
Abstract base class for simplify geometries using a specific algorithm.
Abstract base class - its implementations define different approaches to the labeling of a vector lay...
Storage and management of actions associated with a layer.
Utility class for calculating aggregates for a field (or expression) over the features from a vector ...
This is a container for configuration of the attribute table.
Class allowing to manage the auxiliary storage for a vector layer.
Class providing some utility methods to manage auxiliary storage.
The QgsConditionalLayerStyles class holds conditional style information for a layer.
This class represents a coordinate reference system (CRS).
Contains information about the context in which a coordinate transform is executed.
Abstract base class for curved geometry type.
Definition: qgscurve.h:36
Abstract base class for spatial data provider implementations.
The QgsDefaultValue class provides a container for managing client side default values for fields.
Stores the settings for rendering of all diagrams for a layer.
Evaluates and returns the diagram settings relating to a diagram for a specific feature.
Holder for the widget type and its configuration for a field.
Manages an editor widget Widget and wrapper share the same parent.
Abstract interface for generating an expression context.
virtual QgsExpressionContext createExpressionContext() const =0
This method needs to be reimplemented in all classes which implement this interface and return an exp...
Abstract interface for generating an expression context scope.
Single scope for storing variables and functions for use within a QgsExpressionContext.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
Buffers information about expression fields for a vector layer.
Wrapper for iterator of features from vector data provider or vector layer.
bool nextFeature(QgsFeature &f)
An interface for objects which generate feature renderers for vector layers.
This class wraps a request for features to a vector layer (or directly its vector data provider).
An interface for objects which accept features via addFeature(s) methods.
virtual bool addFeature(QgsFeature &feature, QgsFeatureSink::Flags flags=QgsFeatureSink::Flags())
Adds a single feature to the sink.
An interface for objects which provide features via a getFeatures method.
virtual QSet< QVariant > uniqueValues(int fieldIndex, int limit=-1) const
Returns the set of unique values contained within the specified fieldIndex from this source.
virtual QgsWkbTypes::Type wkbType() const =0
Returns the geometry type for features returned by this source.
virtual QgsFeatureIterator getFeatures(const QgsFeatureRequest &request=QgsFeatureRequest()) const =0
Returns an iterator for the features in the source.
virtual long long featureCount() const =0
Returns the number of features contained in the source, or -1 if the feature count is unknown.
virtual SpatialIndexPresence hasSpatialIndex() const
Returns an enum value representing the presence of a valid spatial index on the source,...
The feature class encapsulates a single feature including its unique ID, geometry and a list of field...
Definition: qgsfeature.h:56
Base class for feedback objects to be used for cancellation of something running in a worker thread.
Definition: qgsfeedback.h:45
ConstraintStrength
Strength of constraints.
@ ConstraintStrengthHard
Constraint must be honored before feature can be accepted.
Constraint
Constraints which may be present on a field.
Encapsulate a field in an attribute table or data source.
Definition: qgsfield.h:51
ConfigurationFlag
Configuration flags for fields These flags are meant to be user-configurable and are not describing a...
Definition: qgsfield.h:80
Container of fields for a vector layer.
Definition: qgsfields.h:45
The QgsGeometryOptions class contains options to automatically adjust geometries to constraints on a ...
A geometry is the spatial representation of a feature.
Definition: qgsgeometry.h:124
OperationResult
Success or failure of a geometry operation.
Definition: qgsgeometry.h:136
Base class for utility classes that encapsulate information necessary for rendering of map layers.
Base class for storage of map layer temporal properties.
Base class for all map layer types.
Definition: qgsmaplayer.h:70
virtual bool accept(QgsStyleEntityVisitorInterface *visitor) const
Accepts the specified symbology visitor, causing it to visit all symbols associated with the layer.
virtual bool setDependencies(const QSet< QgsMapLayerDependency > &layers)
Sets the list of dependencies.
virtual QSet< QgsMapLayerDependency > dependencies() const
Gets the list of dependencies.
friend class QgsVectorLayer
Definition: qgsmaplayer.h:1837
virtual bool isEditable() const
Returns true if the layer can be edited.
virtual QgsMapLayer * clone() const =0
Returns a new instance equivalent to this one except for the id which is still unique.
virtual void setExtent(const QgsRectangle &rect)
Sets the extent.
virtual void setTransformContext(const QgsCoordinateTransformContext &transformContext)=0
Sets the coordinate transform context to transformContext.
Perform transforms between map coordinates and device coordinates.
Definition: qgsmaptopixel.h:39
Contains settings for how a map layer will be labeled.
A class to represent a 2D point.
Definition: qgspointxy.h:59
Point geometry type, with support for z-dimension and m-values.
Definition: qgspoint.h:49
Encapsulates a QGIS project, including sets of map layers and their styles, layouts,...
Definition: qgsproject.h:99
The class is used as a container of context for various read/write operations on other objects.
A rectangle specified with double values.
Definition: qgsrectangle.h:42
This class manages a set of relations between layers.
Contains information about the context of a rendering operation.
Manages stored expressions regarding creation, modification and storing in the project.
An interface for classes which can visit style entity (e.g.
Abstract base class for all rendered symbols.
Definition: qgssymbol.h:38
This is the base class for vector data providers.
Counts the features in a QgsVectorLayer in task.
Partial snapshot of vector layer's state (only the members necessary for access to features)
Manages joined fields for a vector layer.
Defines left outer join from our vector layer to some other vector layer.
Manages QGIS Server properties for a vector layer.
Implementation of map layer temporal properties for vector layers.
Represents a vector layer which manages a vector based data sets.
const QgsActionManager * actions() const
Returns all layer actions defined on this layer.
VertexMarkerType
Editing vertex markers.
void committedFeaturesAdded(const QString &layerId, const QgsFeatureList &addedFeatures)
Emitted when features are added to the provider.
void labelingFontNotFound(QgsVectorLayer *layer, const QString &fontfamily)
Emitted when the font family defined for labeling layer is not found on system.
void featureBlendModeChanged(QPainter::CompositionMode blendMode)
Signal emitted when setFeatureBlendMode() is called.
QgsVectorLayerServerProperties * serverProperties() const
Returns QGIS Server Properties of the vector layer.
void beforeRemovingExpressionField(int idx)
Will be emitted, when an expression field is going to be deleted from this vector layer.
void committedGeometriesChanges(const QString &layerId, const QgsGeometryMap &changedGeometries)
Emitted when geometry changes are saved to the provider.
void editingStopped()
Emitted when edited changes have been successfully written to the data provider.
void beforeCommitChanges(bool stopEditing)
Emitted before changes are committed to the data provider.
void mapTipTemplateChanged()
Emitted when the map tip changes.
void attributeAdded(int idx)
Will be emitted, when a new attribute has been added to this vector layer.
void allowCommitChanged()
Emitted whenever the allowCommitChanged() property of this layer changes.
void editCommandStarted(const QString &text)
Signal emitted when a new edit command has been started.
QgsVectorLayer & operator=(QgsVectorLayer const &rhs)=delete
QgsVectorLayer cannot be copied.
void editCommandDestroyed()
Signal emitted, when an edit command is destroyed.
QgsVectorLayer(const QgsVectorLayer &rhs)=delete
QgsVectorLayer cannot be copied.
const QgsDiagramLayerSettings * diagramLayerSettings() const
void editingStarted()
Emitted when editing on this layer has started.
void featuresDeleted(const QgsFeatureIds &fids)
Emitted when features have been deleted.
void subsetStringChanged()
Emitted when the layer's subset string has changed.
void committedFeaturesRemoved(const QString &layerId, const QgsFeatureIds &deletedFeatureIds)
Emitted when features are deleted from the provider.
void symbolFeatureCountMapChanged()
Emitted when the feature count for symbols on this layer has been recalculated.
EditResult
Result of an edit operation.
void writeCustomSymbology(QDomElement &element, QDomDocument &doc, QString &errorMessage) const
Signal emitted whenever the symbology (QML-file) for this layer is being written.
QgsAbstractVectorLayerLabeling * labeling()
Access to labeling configuration.
SelectBehavior
Selection behavior.
@ RemoveFromSelection
Remove from current selection.
@ IntersectSelection
Modify current selection to include only select features which match.
@ AddToSelection
Add selection to current selection.
@ SetSelection
Set selection, removing any existing selection.
void attributeDeleted(int idx)
Will be emitted, when an attribute has been deleted from this vector layer.
void beforeEditingStarted()
Emitted before editing on this layer is started.
void committedAttributeValuesChanges(const QString &layerId, const QgsChangedAttributesMap &changedAttributesValues)
Emitted when attribute value changes are saved to the provider.
void committedAttributesAdded(const QString &layerId, const QList< QgsField > &addedAttributes)
Emitted when attributes are added to the provider.
void committedAttributesDeleted(const QString &layerId, const QgsAttributeList &deletedAttributes)
Emitted when attributes are deleted from the provider.
void displayExpressionChanged()
Emitted when the display expression changes.
void layerModified()
Emitted when modifications has been done on layer.
void editFormConfigChanged()
Will be emitted whenever the edit form configuration of this layer changes.
void afterCommitChanges()
Emitted after changes are committed to the data provider.
const QgsFeatureRenderer * renderer() const
Returns the feature renderer used for rendering the features in the layer in 2D map views.
QgsFeature getFeature(QgsFeatureId fid) const
Queries the layer for the feature with the given id.
void raiseError(const QString &msg)
Signals an error related to this vector layer.
void editCommandEnded()
Signal emitted, when an edit command successfully ended.
void supportsEditingChanged()
Emitted when the read only state or the data provider of this layer is changed.
void readOnlyChanged()
Emitted when the read only state of this layer is changed.
void attributeValueChanged(QgsFeatureId fid, int idx, const QVariant &value)
Emitted whenever an attribute value change is done in the edit buffer.
QgsFeatureIterator getFeatures(const QgsFeatureIds &fids)
Queries the layer for the features with the given ids.
void afterRollBack()
Emitted after changes are rolled back.
const QgsVectorLayerJoinBuffer * joinBuffer() const
Returns a const pointer on join buffer object.
void selectionChanged(const QgsFeatureIds &selected, const QgsFeatureIds &deselected, bool clearAndSelect)
Emitted when selection was changed.
void beforeAddingExpressionField(const QString &fieldName)
Will be emitted, when an expression field is going to be added to this vector layer.
void updatedFields()
Emitted whenever the fields available from this layer have been changed.
void featureAdded(QgsFeatureId fid)
Emitted when a new feature has been added to the layer.
void featureDeleted(QgsFeatureId fid)
Emitted when a feature has been deleted.
void readCustomSymbology(const QDomElement &element, QString &errorMessage)
Signal emitted whenever the symbology (QML-file) for this layer is being read.
void beforeRollBack()
Emitted before changes are rolled back.
const QgsDiagramRenderer * diagramRenderer() const
void geometryChanged(QgsFeatureId fid, const QgsGeometry &geometry)
Emitted whenever a geometry change is done in the edit buffer.
QgsFeatureIterator getFeatures(const QgsRectangle &rectangle)
Queries the layer for the features which intersect the specified rectangle.
const QgsVectorSimplifyMethod & simplifyMethod() const
Returns the simplification settings for fast rendering of features.
void beforeModifiedCheck() const
Emitted when the layer is checked for modifications. Use for last-minute additions.
const QgsVectorLayerEditBuffer * editBuffer() const
Buffer with uncommitted editing operations.
QgsFeatureRenderer * renderer()
Returns the feature renderer used for rendering the features in the layer in 2D map views.
This class contains information how to simplify geometries fetched from a vector layer.
SimplifyHint
Simplification flags for fast rendering of features.
The QgsWeakRelation class represent a QgsRelation with possibly unresolved layers or unmatched fields...
GeometryType
The geometry types are used to group QgsWkbTypes::Type in a coarse way.
Definition: qgswkbtypes.h:141
Type
The WKB type describes the number of dimensions a geometry has.
Definition: qgswkbtypes.h:70
#define str(x)
Definition: qgis.cpp:37
QMap< QString, QString > QgsStringMap
Definition: qgis.h:1041
#define SIP_DEPRECATED
Definition: qgis_sip.h:106
#define SIP_SKIP
Definition: qgis_sip.h:126
#define FINAL
Definition: qgis_sip.h:228
#define SIP_PYNAME(name)
Definition: qgis_sip.h:81
#define SIP_TRANSFER
Definition: qgis_sip.h:36
#define SIP_OUT
Definition: qgis_sip.h:58
#define SIP_FACTORY
Definition: qgis_sip.h:76
QVector< QgsPoint > QgsPointSequence
QMap< int, QVariant > QgsAttributeMap
Definition: qgsattributes.h:38
QMap< QgsFeatureId, QgsGeometry > QgsGeometryMap
Definition: qgsfeature.h:731
QMap< QgsFeatureId, QgsAttributeMap > QgsChangedAttributesMap
Definition: qgsfeature.h:722
QList< QgsFeature > QgsFeatureList
Definition: qgsfeature.h:736
QSet< QgsFeatureId > QgsFeatureIds
Definition: qgsfeatureid.h:37
qint64 QgsFeatureId
64 bit feature ids negative numbers are used for uncommitted/newly added features
Definition: qgsfeatureid.h:28
QList< int > QgsAttributeList
Definition: qgsfield.h:26
const QgsField & field
Definition: qgsfield.h:463
QList< int > QgsAttributeList
QSet< int > QgsAttributeIds
Context for cascade delete features.
DeleteContext(bool cascade=false, QgsProject *project=nullptr)
Constructor for DeleteContext.
Setting options for loading vector layers.
LayerOptions(bool loadDefaultStyle=true, bool readExtentFromXml=false)
Constructor for LayerOptions.
LayerOptions(const QgsCoordinateTransformContext &transformContext, bool loadDefaultStyle=true, bool readExtentFromXml=false)
Constructor for LayerOptions.
QgsCoordinateReferenceSystem fallbackCrs
Fallback layer coordinate reference system.