Skip to content

Class QfFeatureModel

ClassList > QfFeatureModel

Inherits the following classes: QAbstractListModel

Classes

Type Name
struct RememberValues
keeping the information what attributes are remembered and the last edited feature

Public Types

Type Name
enum FeatureRoles
enum ModelModes

Public Slots

Type Name
slot void removeLayer (QObject * layer)

Public Properties

Type Name
property QfAppExpressionContextScopesGenerator * appExpressionContextScopesGenerator
property bool attributeEditingLocked
property bool batchMode
property QgsVectorLayer * currentLayer
property QgsFeature feature
property bool featureAdditionLocked
property bool featureDeletionLocked
property QList< QgsFeature > features
property QfGeometry * geometry
property bool geometryEditingLocked
property QgsFeature linkedParentFeature
property QgsRelation linkedRelation
property QString linkedRelationOrderingField
property QfFeatureModel::ModelModes modelMode
property QgsProject * project
property QfSnappingResult topSnappingResult
property QfVertexModel * vertexModel

Public Signals

Type Name
signal void appExpressionContextScopesGeneratorChanged
signal void attributeEditingLockedChanged
signal void batchModeChanged
signal void currentLayerChanged
signal void featureAdditionLockedChanged
signal void featureChanged
Emitted when the model's single feature has been changed.
signal void featureDeletionLockedChanged
signal void featureUpdated
Emitted when the model's feature has been saved (i.e. updated) but not changed as a result.
signal void featuresChanged
Emitted when the model's multi features list has been changed.
signal void geometryChanged
signal void geometryEditingLockedChanged
signal void linkedParentFeatureChanged
signal void linkedRelationChanged
signal void linkedRelationOrderingFieldChanged
signal void modelModeChanged
signal void projectChanged
signal void topSnappingResultChanged
signal void vertexModelChanged
signal void warning (const QString & text)

Public Functions

Type Name
QfFeatureModel (QObject * parent=nullptr)
QfAppExpressionContextScopesGenerator * appExpressionContextScopesGenerator () const
Q_INVOKABLE void applyGeometry (bool fromVertexModel=false, bool skipTopologicalEditing=false)
Q_INVOKABLE void applyGeometryToVertexModel ()
Apply the feature geometry to a vertex model if present.
bool attributeEditingLocked () const
bool batchMode () const
Q_INVOKABLE bool changeGeometry (const QgsGeometry & geometry)
Q_INVOKABLE bool create (bool flushBuffer=true)
QgsExpressionContext createExpressionContext () const
QVariant data (const QModelIndex & index, int role) override const
Q_INVOKABLE bool deleteFeature ()
QgsFeature feature () const
bool featureAdditionLocked () const
bool featureDeletionLocked () const
QList< QgsFeature > features () const
QfGeometry * geometry ()
bool geometryEditingLocked () const
QgsVectorLayer * layer () const
QgsFeature linkedParentFeature () const
QgsRelation linkedRelation () const
QString linkedRelationOrderingField () const
ModelModes modelMode () const
bool positionLocked () const
QgsProject * project () const
Returns the current project from which the digitizing logs will be sought.
Q_INVOKABLE void refresh ()
QVector< bool > rememberedAttributes () const
Q_INVOKABLE void reset ()
Q_INVOKABLE void resetAttributes (bool partialReset=false)
Q_INVOKABLE void resetFeature ()
Q_INVOKABLE void resetFeatureId ()
QHash< int, QByteArray > roleNames () override const
int rowCount (const QModelIndex & parent) override const
Q_INVOKABLE bool save (bool flushBuffer=true)
void setAppExpressionContextScopesGenerator (QfAppExpressionContextScopesGenerator * generator)
void setBatchMode (bool batchMode)
void setCurrentLayer (QgsVectorLayer * layer)
bool setData (const QModelIndex & index, const QVariant & value, int role=Qt::EditRole) override
void setFeature (const QgsFeature & feature)
void setFeatures (const QList< QgsFeature > & features)
void setGeometry (QfGeometry * geometry)
void setLinkedParentFeature (const QgsFeature & feature)
void setLinkedRelation (const QgsRelation & relation)
void setLinkedRelationOrderingField (const QString & orderingField)
void setModelMode (const ModelModes mode)
void setPositionLocked (bool positionLocked)
void setProject (QgsProject * project)
Sets the project used to find the digitizing logs layer.
void setTopSnappingResult (const QfSnappingResult & topSnappingResult)
void setVertexModel (QfVertexModel * model)
Sets the vertex model is used to highlight vertices on the map.
Q_INVOKABLE bool suppressFeatureForm () const
QfSnappingResult topSnappingResult () const
Q_INVOKABLE bool updateAttributesFromFeature (const QgsFeature & feature)
Q_INVOKABLE void updateRubberband () const
Update the linked geometry rubber band to match the feature's geometry.
QfVertexModel * vertexModel ()
Returns the vertex model is used to highlight vertices on the map.

Public Types Documentation

enum FeatureRoles

enum QfFeatureModel::FeatureRoles {
    AttributeName = Qt::UserRole + 1,
    AttributeValue,
    Field,
    RememberAttribute,
    LinkedAttribute,
    AttributeAllowEdit
};

enum ModelModes

enum QfFeatureModel::ModelModes {
    SingleFeatureModel = 1,
    MultiFeatureModel
};

Public Properties Documentation

property appExpressionContextScopesGenerator [1/2]

QfAppExpressionContextScopesGenerator * QfFeatureModel::appExpressionContextScopesGenerator;

property attributeEditingLocked [1/2]

bool QfFeatureModel::attributeEditingLocked;

property batchMode [1/2]

bool QfFeatureModel::batchMode;

property currentLayer

QgsVectorLayer * QfFeatureModel::currentLayer;

property feature [1/2]

QgsFeature QfFeatureModel::feature;

property featureAdditionLocked [1/2]

bool QfFeatureModel::featureAdditionLocked;

property featureDeletionLocked [1/2]

bool QfFeatureModel::featureDeletionLocked;

property features [1/2]

QList<QgsFeature> QfFeatureModel::features;

property geometry [1/2]

QfGeometry * QfFeatureModel::geometry;

property geometryEditingLocked [1/2]

bool QfFeatureModel::geometryEditingLocked;

property linkedParentFeature [1/2]

QgsFeature QfFeatureModel::linkedParentFeature;

property linkedRelation [1/2]

QgsRelation QfFeatureModel::linkedRelation;

property linkedRelationOrderingField [1/2]

QString QfFeatureModel::linkedRelationOrderingField;

property modelMode [1/2]

QfFeatureModel::ModelModes QfFeatureModel::modelMode;

property project [1/2]

QgsProject * QfFeatureModel::project;

property topSnappingResult [1/2]

QfSnappingResult QfFeatureModel::topSnappingResult;

property vertexModel [1/2]

QfVertexModel * QfFeatureModel::vertexModel;

Public Slots Documentation

slot removeLayer

void QfFeatureModel::removeLayer;

Public Signals Documentation

signal appExpressionContextScopesGeneratorChanged

void QfFeatureModel::appExpressionContextScopesGeneratorChanged;

signal attributeEditingLockedChanged

void QfFeatureModel::attributeEditingLockedChanged;

signal batchModeChanged

void QfFeatureModel::batchModeChanged;

signal currentLayerChanged

void QfFeatureModel::currentLayerChanged;

signal featureAdditionLockedChanged

void QfFeatureModel::featureAdditionLockedChanged;

signal featureChanged

Emitted when the model's single feature has been changed.

void QfFeatureModel::featureChanged;


signal featureDeletionLockedChanged

void QfFeatureModel::featureDeletionLockedChanged;

signal featureUpdated

Emitted when the model's feature has been saved (i.e. updated) but not changed as a result.

void QfFeatureModel::featureUpdated;


signal featuresChanged

Emitted when the model's multi features list has been changed.

void QfFeatureModel::featuresChanged;


signal geometryChanged

void QfFeatureModel::geometryChanged;

signal geometryEditingLockedChanged

void QfFeatureModel::geometryEditingLockedChanged;

signal linkedParentFeatureChanged

void QfFeatureModel::linkedParentFeatureChanged;

signal linkedRelationChanged

void QfFeatureModel::linkedRelationChanged;

signal linkedRelationOrderingFieldChanged

void QfFeatureModel::linkedRelationOrderingFieldChanged;

signal modelModeChanged

void QfFeatureModel::modelModeChanged;

signal projectChanged

void QfFeatureModel::projectChanged;

signal topSnappingResultChanged

void QfFeatureModel::topSnappingResultChanged;

signal vertexModelChanged

void QfFeatureModel::vertexModelChanged;

signal warning

void QfFeatureModel::warning;

Public Functions Documentation

function QfFeatureModel

explicit QfFeatureModel::QfFeatureModel (
    QObject * parent=nullptr
) 

function appExpressionContextScopesGenerator [2/2]

QfAppExpressionContextScopesGenerator * QfFeatureModel::appExpressionContextScopesGenerator () const

Returns the application expression context scopes generator object


function applyGeometry

Q_INVOKABLE void QfFeatureModel::applyGeometry (
    bool fromVertexModel=false,
    bool skipTopologicalEditing=false
) 

Apply the geometry object or vertex model object's geometry to the feature geometry.

Parameters:

  • fromVertexModel set to TRUE to use the vertex model
  • skipTopologicalEditing set to TRUE to skip project-level topological editing rule

function applyGeometryToVertexModel

Apply the feature geometry to a vertex model if present.

Q_INVOKABLE void QfFeatureModel::applyGeometryToVertexModel () 


function attributeEditingLocked [2/2]

inline bool QfFeatureModel::attributeEditingLocked () const

function batchMode [2/2]

inline bool QfFeatureModel::batchMode () const

Returns TRUE if the feature model is in batch mode. When enabled, the vector layer will remain in editing mode until batch mode is disabled.


function changeGeometry

Q_INVOKABLE bool QfFeatureModel::changeGeometry (
    const QgsGeometry & geometry
) 

Sets the geometry of the feature.


function create

Q_INVOKABLE bool QfFeatureModel::create (
    bool flushBuffer=true
) 

Will create this feature as a new feature on the data source.

By setting flushBuffer to FALSE, the created feature will remain in the edit buffer provided the vector layer was already in editing mode. The flushBuffer parameter will be ignored for layers containing relationships.

Returns:

TRUE if a feature was successfully created


function createExpressionContext

QgsExpressionContext QfFeatureModel::createExpressionContext () const

function data

QVariant QfFeatureModel::data (
    const QModelIndex & index,
    int role
) override const

function deleteFeature

Q_INVOKABLE bool QfFeatureModel::deleteFeature () 

Deletes the current feature from the data source.


function feature [2/2]

QgsFeature QfFeatureModel::feature () const

function featureAdditionLocked [2/2]

inline bool QfFeatureModel::featureAdditionLocked () const

function featureDeletionLocked [2/2]

inline bool QfFeatureModel::featureDeletionLocked () const

function features [2/2]

QList< QgsFeature > QfFeatureModel::features () const

Return the features list for passing it around in QML


function geometry [2/2]

QfGeometry * QfFeatureModel::geometry () 

Returns the geometry object that will drive the feature geometry.


function geometryEditingLocked [2/2]

inline bool QfFeatureModel::geometryEditingLocked () const

function layer

QgsVectorLayer * QfFeatureModel::layer () const

function linkedParentFeature [2/2]

QgsFeature QfFeatureModel::linkedParentFeature () const

A linked feature is a parent feature of a relation passing it's pk(s) to the created child features fk(s)

Returns:

the parent feature linked to this feature

See also: setLinkedParentFeature


function linkedRelation [2/2]

QgsRelation QfFeatureModel::linkedRelation () const

The relation connecting this feature to the parent, over which this feature has been loaded (e.g. over relation editor widget)

Returns:

the relation connecting the parent

See also: setLinkedRelation


function linkedRelationOrderingField [2/2]

QString QfFeatureModel::linkedRelationOrderingField () const

Returns the field name used for ordering in ordered relations. Empty string if not available.

See also: setLinkedRelationOrderingField


function modelMode [2/2]

ModelModes QfFeatureModel::modelMode () const

function positionLocked

bool QfFeatureModel::positionLocked () const

Returns whether the position is locked to the GNSS


function project [2/2]

Returns the current project from which the digitizing logs will be sought.

inline QgsProject * QfFeatureModel::project () const


function refresh

Q_INVOKABLE void QfFeatureModel::refresh () 

Will refresh the feature values and geometry from the data source.


function rememberedAttributes

QVector< bool > QfFeatureModel::rememberedAttributes () const

function reset

Q_INVOKABLE void QfFeatureModel::reset () 

Will reset the feature to the original values and dismiss any buffered edits.


function resetAttributes

Q_INVOKABLE void QfFeatureModel::resetAttributes (
    bool partialReset=false
) 

Resets the attribute values of the current feature

Parameters:

  • partialReset when set to TRUE, only attributes with default or remembered values will be reset

function resetFeature

Q_INVOKABLE void QfFeatureModel::resetFeature () 

function resetFeatureId

Q_INVOKABLE void QfFeatureModel::resetFeatureId () 

function roleNames

QHash< int, QByteArray > QfFeatureModel::roleNames () override const

function rowCount

int QfFeatureModel::rowCount (
    const QModelIndex & parent
) override const

function save

Q_INVOKABLE bool QfFeatureModel::save (
    bool flushBuffer=true
) 

Will commit the edit buffer of this layer. May change in the future to only commit the changes buffered in this model.

By setting flushBuffer to FALSE, the edits made to the feature will remain in the edit buffer provided the vector layer was already in editing mode.

Returns:

TRUE if a feature was successfully saved


function setAppExpressionContextScopesGenerator

void QfFeatureModel::setAppExpressionContextScopesGenerator (
    QfAppExpressionContextScopesGenerator * generator
) 

Sets the application expression context scopes generator object


function setBatchMode

void QfFeatureModel::setBatchMode (
    bool batchMode
) 

Toggles the feature model batch mode. When enabled, the vector layer will remain in editing mode until batch mode is disabled.


function setCurrentLayer

void QfFeatureModel::setCurrentLayer (
    QgsVectorLayer * layer
) 

function setData

bool QfFeatureModel::setData (
    const QModelIndex & index,
    const QVariant & value,
    int role=Qt::EditRole
) override

function setFeature

void QfFeatureModel::setFeature (
    const QgsFeature & feature
) 

function setFeatures

void QfFeatureModel::setFeatures (
    const QList< QgsFeature > & features
) 

function setGeometry

void QfFeatureModel::setGeometry (
    QfGeometry * geometry
) 

Sets the geometry object that will drive the feature geometry.

Note:

This is not the QgsGeometry of the feature. To change that, use the changeGeometry function.


function setLinkedParentFeature

void QfFeatureModel::setLinkedParentFeature (
    const QgsFeature & feature
) 

A linked feature is a parent feature of a relation passing it's pk(s) to the created child features fk(s) The fk fields are evaluated over the linked relation.

Parameters:

  • feature

See also: linkedParentFeature


function setLinkedRelation

void QfFeatureModel::setLinkedRelation (
    const QgsRelation & relation
) 

The relation connecting this feature to the parent, over which this feature has been loaded (e.g. over relation editor widget) The relation is userd to evaluate the parents pk(s) and the childs fk(s)

Parameters:

  • relation

See also: linkedRelation


function setLinkedRelationOrderingField

void QfFeatureModel::setLinkedRelationOrderingField (
    const QString & orderingField
) 

Sets the field name used for ordering in ordered relations. Empty string if not available.

See also: linkedRelationOrderingField


function setModelMode

void QfFeatureModel::setModelMode (
    const ModelModes mode
) 

function setPositionLocked

void QfFeatureModel::setPositionLocked (
    bool positionLocked
) 

Sets whether the position is locked to the GNSS


function setProject

Sets the project used to find the digitizing logs layer.

void QfFeatureModel::setProject (
    QgsProject * project
) 


function setTopSnappingResult

void QfFeatureModel::setTopSnappingResult (
    const QfSnappingResult & topSnappingResult
) 

Sets the top snapping result of the coordinate locator

Parameters:

  • topSnappingResult the top snapping result object

function setVertexModel

Sets the vertex model is used to highlight vertices on the map.

void QfFeatureModel::setVertexModel (
    QfVertexModel * model
) 


function suppressFeatureForm

Q_INVOKABLE bool QfFeatureModel::suppressFeatureForm () const

Returns whether the feature form should be suppressed when adding new features.


function topSnappingResult [2/2]

QfSnappingResult QfFeatureModel::topSnappingResult () const

Returns the top snapping result of the coordinate locator


function updateAttributesFromFeature

Q_INVOKABLE bool QfFeatureModel::updateAttributesFromFeature (
    const QgsFeature & feature
) 

Update attributes to match that of a given feature

Parameters:

  • feature feature from which attributes will be taken

Returns:

TRUE if one or more attribute was updated


function updateRubberband

Update the linked geometry rubber band to match the feature's geometry.

Q_INVOKABLE void QfFeatureModel::updateRubberband () const


function vertexModel [2/2]

Returns the vertex model is used to highlight vertices on the map.

QfVertexModel * QfFeatureModel::vertexModel () 



The documentation for this class was generated from the following file src/core/qffeaturemodel.h