QGIS API Documentation
3.14.0-Pi (9f7028fd23)
|
Go to the documentation of this file.
16 #include <QRegularExpression>
46 std::unique_ptr<QgsExpression> expression;
56 if ( expression->hasParserError() || !expression->prepare( &context ) )
65 lst.insert( fieldOrExpression );
67 lst = expression->referencedColumns();
70 .
setFlags( ( expression && expression->needsGeometry() ) ?
88 QList<QVariant> values;
92 std::unique_ptr<QgsExpression> expression;
109 QVariant v = expression->evaluate( &context );
128 QList<double> values;
133 QList<QVariant> variantValues =
getValues( layer, fieldOrExpression, ok, selectedOnly, feedback );
138 const auto constVariantValues = variantValues;
139 for (
const QVariant &value : constVariantValues )
141 double val = value.toDouble( &convertOk );
144 else if ( value.isNull() )
165 if ( fieldIndex < 0 || fieldIndex >= fields.
count() )
169 if ( fields.
fieldOrigin( fieldIndex ) == QgsFields::FieldOrigin::OriginJoin )
177 fieldIndex = srcFieldIndex;
178 layer = joinInfo->joinLayer();
186 QString fieldName = fields.
at( fieldIndex ).
name();
194 int limit = ignoreIds.size() + 1;
204 if ( ignoreIds.contains( feat.
id() ) )
220 if ( fieldIndex < 0 || fieldIndex >= fields.
count() )
228 QVariant newVar( maxVal.toLongLong() + 1 );
236 switch ( field.
type() )
238 case QVariant::String:
241 if ( seed.isValid() )
242 base = seed.toString();
244 if ( !base.isEmpty() )
247 QRegularExpression rx( QStringLiteral(
"(.*)_\\d+" ) );
248 QRegularExpressionMatch match = rx.match( base );
249 if ( match.hasMatch() )
251 base = match.captured( 1 );
263 base = f.
attribute( fieldIndex ).toString();
270 if ( !base.isEmpty() && !vals.contains( base ) )
273 for (
int i = 1; i < 10000; ++i )
275 QString testVal = base +
'_' + QString::number( i );
276 if ( !vals.contains( testVal ) )
300 if ( fieldIndex < 0 || fieldIndex >= fields.
count() )
307 QVariant maxVal = existingValues.isEmpty() ? 0 : *std::max_element( existingValues.begin(), existingValues.end() );
308 QVariant newVar( maxVal.toLongLong() + 1 );
316 switch ( field.
type() )
318 case QVariant::String:
321 if ( seed.isValid() )
322 base = seed.toString();
324 if ( !base.isEmpty() )
327 QRegularExpression rx( QStringLiteral(
"(.*)_\\d+" ) );
328 QRegularExpressionMatch match = rx.match( base );
329 if ( match.hasMatch() )
331 base = match.captured( 1 );
338 base = existingValues.isEmpty() ? QString() : existingValues.values().first().toString();
343 for (
const auto &v : qgis::as_const( existingValues ) )
345 if ( v.toString().startsWith( base ) )
346 vals.push_back( v.toString() );
350 if ( !base.isEmpty() && !vals.contains( base ) )
353 for (
int i = 1; i < 10000; ++i )
355 QString testVal = base +
'_' + QString::number( i );
356 if ( !vals.contains( testVal ) )
380 if ( attributeIndex < 0 || attributeIndex >= layer->
fields().
count() )
385 QVariant value = feature.
attribute( attributeIndex );
400 valid = expr.
evaluate( &context ).toBool();
408 errors << QObject::tr(
"evaluation error: %1" ).arg( expr.
evalErrorString() );
416 bool notNullConstraintViolated {
false };
432 valid = valid && !value.isNull();
434 if ( value.isNull() )
436 errors << QObject::tr(
"value is NULL" );
437 notNullConstraintViolated =
true;
443 if ( ! notNullConstraintViolated )
462 valid = valid && !alreadyExists;
466 errors << QObject::tr(
"value is not unique" );
479 return features.isEmpty() ?
QgsFeature() : features.first();
488 result.reserve( featuresData.length() );
491 std::unique_ptr< QgsExpressionContext > tempContext;
496 evalContext = tempContext.get();
502 QMap<int, QSet<QVariant>> uniqueValueCache;
504 auto checkUniqueValue = [ & ](
const int fieldIdx,
const QVariant & value )
506 if ( ! uniqueValueCache.contains( fieldIdx ) )
511 std::unique_ptr<QgsVectorLayer> unfilteredClone { layer->
clone( ) };
513 uniqueValueCache[ fieldIdx ] = unfilteredClone->uniqueValues( fieldIdx );
517 uniqueValueCache[ fieldIdx ] = layer->
uniqueValues( fieldIdx );
520 return uniqueValueCache[ fieldIdx ].contains( value );
523 for (
const auto &fd : qgis::as_const( featuresData ) )
532 for (
int idx = 0; idx < fields.
count(); ++idx )
535 bool checkUnique =
true;
540 if ( fd.attributes().contains( idx ) )
542 v = fd.attributes().value( idx );
548 if ( ( v.isNull() || ( hasUniqueConstraint
549 && checkUniqueValue( idx, v ) )
551 && defaultValueDefinition.
isValid() )
556 v = layer->
defaultValue( idx, newFeature, evalContext );
561 if ( ( v.isNull() || ( hasUniqueConstraint
562 && checkUniqueValue( idx, v ) ) )
567 if ( !providerDefault.isEmpty() )
576 if ( ( v.isNull() || ( checkUnique && hasUniqueConstraint
577 && checkUniqueValue( idx, v ) ) )
591 if ( v.isNull() && fd.attributes().contains( idx ) )
593 v = fd.attributes().value( idx );
601 if ( checkUnique && hasUniqueConstraint )
603 if ( checkUniqueValue( idx, v ) )
607 if ( uniqueValue.isValid() )
611 if ( hasUniqueConstraint )
613 uniqueValueCache[ idx ].insert( v );
618 result.append( newFeature );
649 while ( relatedFeaturesIt.
nextFeature( childFeature ) )
652 relation.referencingLayer()->startEditing();
654 const auto pairs = relation.fieldPairs();
660 childFeatureIds.insert(
duplicateFeature( relation.referencingLayer(), childFeature, project, depth, duplicateFeatureContext ).
id() );
664 duplicateFeatureContext.setDuplicatedFeatures( relation.referencingLayer(), childFeatureIds );
675 std::unique_ptr<QgsVectorLayerFeatureSource> featureSource;
679 #if QT_VERSION >= QT_VERSION_CHECK( 5, 10, 0 )
680 Q_ASSERT( QThread::currentThread() == qApp->thread() || feedback );
694 return featureSource;
702 attributes.reserve( fields.
size() );
704 for (
const QgsField &field : fields )
707 attributes.append( index >= 0 ? feature.
attribute( index ) : QVariant( field.type() ) );
715 if ( lengthDiff > 0 )
721 else if ( lengthDiff < 0 )
725 attributes.reserve( fields.
count() );
728 attributes.append( QVariant( fields.
at( i ).
type() ) );
745 bool newFHasGeom = newFGeomType !=
746 QgsWkbTypes::GeometryType::UnknownGeometry &&
747 newFGeomType != QgsWkbTypes::GeometryType::NullGeometry;
748 bool layerHasGeom = inputWkbType !=
749 QgsWkbTypes::Type::NoGeometry &&
750 inputWkbType != QgsWkbTypes::Type::Unknown;
752 if ( ( newFHasGeom && !layerHasGeom ) || !newFHasGeom )
756 resultFeatures.append( _f );
763 if ( geometries.count() != 1 )
766 for (
int j = 0; j < newF.
fields().count(); j++ )
770 resultFeatures.reserve( geometries.size() );
774 resultFeatures.append( _f );
780 resultFeatures.append( newF );
783 return resultFeatures;
792 for (
const auto &_f : features )
794 resultFeatures.append( _f );
797 return resultFeatures;
802 QList<QgsVectorLayer *>
layers;
803 QMap<QgsVectorLayer *, QgsFeatureIds>::const_iterator i;
804 for ( i = mDuplicatedFeatures.begin(); i != mDuplicatedFeatures.end(); ++i )
811 return mDuplicatedFeatures[layer];
816 mDuplicatedFeatures.insert( layer, ids );
826 mGeometry( geometry ),
827 mAttributes( attributes )
861 if ( !joinedFeature.
isValid() )
890 if ( labelSettingsEntity->settings().format().mask().enabled() )
892 for (
const auto &r : labelSettingsEntity->settings().format().mask().maskedSymbolLayers() )
894 masks[currentRule][r.layerId()].insert( r.symbolLayerId() );
901 QHash<QString, QHash<QString, QSet<QgsSymbolLayerId>>> masks;
909 LabelMasksVisitor visitor;
911 return std::move( visitor.masks );
927 void visitSymbol(
const QgsSymbol *symbol )
932 for (
const auto &mask : sl->
masks() )
934 masks[mask.layerId()].insert( mask.symbolLayerId() );
939 visitSymbol( subSymbol );
948 if ( symbolEntity->symbol() )
949 visitSymbol( symbolEntity->symbol() );
953 QHash<QString, QSet<QgsSymbolLayerId>> masks;
958 return visitor.masks;
968 QString displayString = exp.
evaluate( &context ).toString();
970 return displayString;
985 const auto constFids = fids;
991 while ( relatedFeaturesIt.
nextFeature( childFeature ) )
993 childFeatureIds.insert( childFeature.
id() );
997 if ( childFeatureIds.count() > 0 )
999 if ( context.
layers().contains( relation.referencingLayer() ) )
1003 handledFeatureIds.unite( childFeatureIds );
1004 context.setDuplicatedFeatures( relation.referencingLayer(), handledFeatureIds );
1009 context.setDuplicatedFeatures( relation.referencingLayer(), childFeatureIds );
1020 if ( info.isEditable() && info.hasCascadedDelete() )
1023 const auto constFids = fids;
1028 joinFeatureIds.insert( joinFeature.
id() );
1031 if ( joinFeatureIds.count() > 0 )
1033 if ( context.
layers().contains( info.joinLayer() ) )
1037 handledFeatureIds.unite( joinFeatureIds );
1038 context.setDuplicatedFeatures( info.joinLayer(), handledFeatureIds );
1043 context.setDuplicatedFeatures( info.joinLayer(), joinFeatureIds );
1050 return context.
layers().count();
@ OriginProvider
Field comes from the underlying data provider of the vector layer (originIndex = index in provider's ...
@ NoGeometry
Geometry is not required. It may still be returned if e.g. required for a filter condition.
QgsFeatureIterator getFeatures(const QgsFeatureRequest &request=QgsFeatureRequest()) const FINAL
Queries the layer for features specified in request.
Expression contexts are used to encapsulate the parameters around which a QgsExpression should be eva...
QgsRelationManager relationManager
void appendScopes(const QList< QgsExpressionContextScope * > &scopes)
Appends a list of scopes to the end of the context.
Q_INVOKABLE QgsWkbTypes::Type wkbType() const FINAL
Returns the WKBType or WKBUnknown in case of error.
The QgsDefaultValue class provides a container for managing client side default values for fields.
QStringList uniqueStringsMatching(int index, const QString &substring, int limit=-1, QgsFeedback *feedback=nullptr) const
Returns unique string values of an attribute which contain a specified subset string.
QgsVectorDataProvider * dataProvider() FINAL
Returns the layer's data provider, it may be nullptr.
QString evalErrorString() const
Returns evaluation error.
static bool impactsCascadeFeatures(const QgsVectorLayer *layer, const QgsFeatureIds &fids, const QgsProject *project, QgsDuplicateFeatureContext &context)
void initAttributes(int fieldCount)
Initialize this feature with the given number of fields.
bool isEmpty() const
Checks whether the container is empty.
static QgsFeature duplicateFeature(QgsVectorLayer *layer, const QgsFeature &feature, QgsProject *project, int depth, QgsDuplicateFeatureContext &duplicateFeatureContext)
Duplicates a feature and it's children (one level deep).
virtual bool accept(QgsStyleEntityVisitorInterface *visitor) const
Accepts the specified symbology visitor, causing it to visit all symbols associated with the renderer...
QgsAttributeMap attributes() const
Returns attributes.
int count() const
Returns number of items.
QString constraintExpression() const
Returns the constraint expression for the field, if set.
QgsWkbTypes::Type wkbType() const
Returns type of the geometry as a WKB type (point / linestring / polygon etc.)
void setValid(bool validity)
Sets the validity of the feature.
const QgsVectorLayerJoinInfo * joinForFieldIndex(int index, const QgsFields &fields, int &sourceFieldIndex) const
Finds the vector join for a layer field index.
@ Composition
Fix relation, related elements are part of the parent and a parent copy will copy any children or del...
bool isValid() const
Returns if this default value should be applied.
static QgsFeatureIterator getValuesIterator(const QgsVectorLayer *layer, const QString &fieldOrExpression, bool &ok, bool selectedOnly)
Create a feature iterator for a specified field name or expression.
static QList< QgsExpressionContextScope * > globalProjectLayerScopes(const QgsMapLayer *layer)
Creates a list of three scopes: global, layer's project and layer.
QgsFeatureData(const QgsGeometry &geometry=QgsGeometry(), const QgsAttributeMap &attributes=QgsAttributeMap())
Constructs a new QgsFeatureData with given geometry and attributes.
virtual bool skipConstraintCheck(int fieldIndex, QgsFieldConstraints::Constraint constraint, const QVariant &value=QVariant()) const
Returns true if a constraint check should be skipped for a specified field (e.g., if the value return...
Type
The WKB type describes the number of dimensions a geometry has.
static QHash< QString, QSet< QgsSymbolLayerId > > symbolLayerMasks(const QgsVectorLayer *)
Returns all masks that may be defined on symbol layers for a given vector layer.
QgsFeatureRequest & setSubsetOfAttributes(const QgsAttributeList &attrs)
Set a subset of attributes that will be fetched.
Encapsulate geometry and attributes for new features, to be passed to createFeatures.
QgsSymbolLayer * symbolLayer(int layer)
Returns the symbol layer at the specified index.
QList< int > QgsAttributeList
QVector< QgsGeometry > coerceToType(QgsWkbTypes::Type type) const
Attempts to coerce this geometry into the specified destination type.
@ ConstraintNotNull
Field may not be null.
Contains information relating to the style entity currently being visited.
QVariant defaultValue(int index, const QgsFeature &feature=QgsFeature(), QgsExpressionContext *context=nullptr) const
Returns the calculated default value for the specified field index.
virtual QVariant defaultValue(int fieldIndex) const
Returns any literal default values which are present at the provider for a specified field index.
static QHash< QString, QHash< QString, QSet< QgsSymbolLayerId > > > labelMasks(const QgsVectorLayer *)
Returns masks defined in labeling options of a layer.
bool isEditable() const FINAL
Returns true if the provider is in editing mode.
@ LabelSettingsEntity
Label settings.
QgsFeatureRequest & setFilterExpression(const QString &expression)
Set the filter expression.
static QString quotedValue(const QVariant &value)
Returns a string representation of a literal value, including appropriate quotations where required.
QgsFields fields() const FINAL
Returns the list of fields of this layer.
static QList< QVariant > getValues(const QgsVectorLayer *layer, const QString &fieldOrExpression, bool &ok, bool selectedOnly=false, QgsFeedback *feedback=nullptr)
Fetches all values from a specified field name or expression.
virtual QgsVectorDataProvider::Capabilities capabilities() const
Returns flags containing the supported capabilities.
bool hasEvalError() const
Returns true if an error occurred when evaluating last input.
QList< QgsVectorLayer * > layers() const
Returns all the layers on which features have been duplicated.
bool _fieldIsEditable(const QgsVectorLayer *layer, int fieldIndex, const QgsFeature &feature)
void setGeometry(const QgsGeometry &geometry)
Set the feature's geometry.
QList< QgsRelation > referencedRelations(const QgsVectorLayer *layer=nullptr) const
Gets all relations where this layer is the referenced part (i.e.
QList< QgsVectorLayerUtils::QgsFeatureData > QgsFeaturesDataList
Alias for list of QgsFeatureData.
QString parserErrorString() const
Returns parser error.
bool isValid() const
Returns the validity of this feature.
void setFields(const QgsFields &fields, bool initAttributes=false)
Assign a field map with the feature to allow attribute access by attribute name.
ConstraintOrigin
Origin of constraints.
const QgsAbstractVectorLayerLabeling * labeling() const
Access to const labeling configuration.
bool hasUpsertOnEdit() const
Returns whether a feature created on the target layer has to impact the joined layer by creating a ne...
Contains mainly the QMap with QgsVectorLayer and QgsFeatureIds do list all the duplicated features.
bool convertCompatible(QVariant &v) const
Converts the provided variant to a compatible format.
QSet< QVariant > uniqueValues(int fieldIndex, int limit=-1) const FINAL
Calculates a list of unique values contained within an attribute in the layer.
int size() const
Returns number of items.
FieldOrigin fieldOrigin(int fieldIdx) const
Gets field's origin (value from an enumeration)
QList< QgsFeature > QgsFeatureList
QMap< int, QVariant > QgsAttributeMap
bool isEditable() const
Returns whether joined fields may be edited through the form of the target layer.
@ ConstraintUnique
Field must have a unique value.
static GeometryType geometryType(Type type)
Returns the geometry type for a WKB type, e.g., both MultiPolygon and CurvePolygon would have a Polyg...
const QgsVectorJoinList & vectorJoins() const
virtual QgsStyle::StyleEntity type() const =0
Returns the type of style entity.
QVariant attribute(const QString &name) const
Lookup attribute value from attribute name.
QVariant maximumValue(int index) const FINAL
Returns the maximum value for an attribute column or an invalid variant in case of error.
static QVariant createUniqueValue(const QgsVectorLayer *layer, int fieldIndex, const QVariant &seed=QVariant())
Returns a new attribute value for the specified field index which is guaranteed to be unique.
@ ConstraintStrengthNotSet
Constraint is not set.
@ SymbolRule
Rule based symbology or label child rule.
Contains information relating to a node (i.e.
ConstraintStrength constraintStrength(Constraint constraint) const
Returns the strength of a field constraint, or ConstraintStrengthNotSet if the constraint is not pres...
QString constraintDescription() const
Returns the descriptive name for the constraint expression.
QgsAttributeMap toMap() const
Returns a QgsAttributeMap of the attribute values.
QgsGeometry geometry() const
Returns geometry.
QgsFeatureRequest & setNoAttributes()
Set that no attributes will be fetched.
bool prepare(const QgsExpressionContext *context)
Gets the expression ready for evaluation - find out column indexes.
QSet< QgsFeatureId > QgsFeatureIds
static std::unique_ptr< QgsVectorLayerFeatureSource > getFeatureSource(QPointer< QgsVectorLayer > layer, QgsFeedback *feedback=nullptr)
Gets the feature source from a QgsVectorLayer pointer.
QgsDefaultValue defaultValueDefinition(int index) const
Returns the definition of the expression used when calculating the default value for a field.
QVariant evaluate()
Evaluate the feature and return the result.
static QgsFeature createFeature(const QgsVectorLayer *layer, const QgsGeometry &geometry=QgsGeometry(), const QgsAttributeMap &attributes=QgsAttributeMap(), QgsExpressionContext *context=nullptr)
Creates a new feature ready for insertion into a layer.
const QgsStyleEntityInterface * entity
Reference to style entity being visited.
QgsFeatureIterator getSelectedFeatures(QgsFeatureRequest request=QgsFeatureRequest()) const
Returns an iterator of the selected features.
bool isCanceled() const
Tells whether the operation has been canceled already.
bool setAttribute(int field, const QVariant &attr)
Set an attribute's value by field index.
@ ConstraintOriginNotSet
Constraint is not set.
virtual QgsSymbolLayerReferenceList masks() const
Returns masks defined by this symbol layer.
static void matchAttributesToFields(QgsFeature &feature, const QgsFields &fields)
Matches the attributes in feature to the specified fields.
GeometryType
The geometry types are used to group QgsWkbTypes::Type in a coarse way.
bool nextFeature(QgsFeature &f)
static bool runOnMainThread(const Func &func, QgsFeedback *feedback=nullptr)
Guarantees that func is executed on the main thread.
static QgsFeatureList makeFeatureCompatible(const QgsFeature &feature, const QgsVectorLayer *layer)
Converts input feature to be compatible with the given layer.
@ ChangeAttributeValues
Allows modification of attribute values.
QgsFeatureRequest & setLimit(long limit)
Set the maximum number of features to request.
QgsEditFormConfig editFormConfig
QgsFeature joinedFeatureOf(const QgsVectorLayerJoinInfo *info, const QgsFeature &feature) const
Returns the joined feature corresponding to the feature.
static bool validateAttribute(const QgsVectorLayer *layer, const QgsFeature &feature, int attributeIndex, QStringList &errors, QgsFieldConstraints::ConstraintStrength strength=QgsFieldConstraints::ConstraintStrengthNotSet, QgsFieldConstraints::ConstraintOrigin origin=QgsFieldConstraints::ConstraintOriginNotSet)
Tests an attribute value to check whether it passes all constraints which are present on the correspo...
static bool fieldIsEditable(const QgsVectorLayer *layer, int fieldIndex, const QgsFeature &feature)
QgsVectorLayer * joinLayer() const
Returns joined layer (may be nullptr if the reference was set by layer ID and not resolved yet)
@ ConstraintExpression
Field has an expression constraint set. See constraintExpression().
static QString quotedColumnRef(QString name)
Returns a quoted column reference (in double quotes)
int fieldOriginIndex(int fieldIdx) const
Gets field's origin index (its meaning is specific to each type of origin)
QgsFieldConstraints constraints
bool containsJoins() const
Quick way to test if there is any join at all.
static QgsFeatureList createFeatures(const QgsVectorLayer *layer, const QgsFeaturesDataList &featuresData, QgsExpressionContext *context=nullptr)
Creates a set of new features ready for insertion into a layer.
virtual QString defaultValueClause(int fieldIndex) const
Returns any default value clauses which are present at the provider for a specified field index.
bool hasParserError() const
Returns true if an error occurred when parsing the input expression.
QgsFeature getFeature(QgsFeatureId fid) const
Queries the layer for the feature with the given id.
@ ConstraintOriginProvider
Constraint was set at data provider.
ConstraintStrength
Strength of constraints.
QgsFeatureIds duplicatedFeatures(QgsVectorLayer *layer) const
Returns the duplicated features in the given layer.
void setAttributes(const QgsAttributes &attrs)
Sets the feature's attributes.
int lookupField(const QString &fieldName) const
Looks up field's index from the field name.
static QVariant createUniqueValueFromCache(const QgsVectorLayer *layer, int fieldIndex, const QSet< QVariant > &existingValues, const QVariant &seed=QVariant())
Returns a new attribute value for the specified field index which is guaranteed to be unique within r...
QgsExpressionContext createExpressionContext() const FINAL
This method needs to be reimplemented in all classes which implement this interface and return an exp...
QgsField at(int i) const
Gets field at particular index (must be in range 0..N-1)
QString displayExpression
QString identifier
A string identifying the node.
static bool valueExists(const QgsVectorLayer *layer, int fieldIndex, const QVariant &value, const QgsFeatureIds &ignoreIds=QgsFeatureIds())
Returns true if the specified value already exists within a field.
QgsVectorLayer * clone() const override
Returns a new instance equivalent to this one.
bool addFeature(QgsFeature &feature, QgsFeatureSink::Flags flags=QgsFeatureSink::Flags()) FINAL
Adds a single feature to the sink.
virtual bool accept(QgsStyleEntityVisitorInterface *visitor) const
Accepts the specified symbology visitor, causing it to visit all symbols associated with the labeling...
QgsFeatureRequest & setFlags(QgsFeatureRequest::Flags flags)
Sets flags that affect how features will be fetched.
static QgsFeatureList makeFeaturesCompatible(const QgsFeatureList &features, const QgsVectorLayer *layer)
Converts input features to be compatible with the given layer.
QgsStyleEntityVisitorInterface::NodeType type
Node type.
@ OriginJoin
Field comes from a joined layer (originIndex / 1000 = index of the join, originIndex % 1000 = index w...
QgsVectorLayerJoinBuffer * joinBuffer()
Returns the join buffer object.
ConstraintOrigin constraintOrigin(Constraint constraint) const
Returns the origin of a field constraint, or ConstraintOriginNotSet if the constraint is not present ...
virtual bool setSubsetString(const QString &subset)
Sets the string (typically sql) used to define a subset of the layer.
int symbolLayerCount() const
Returns the total number of symbol layers contained in the symbol.
void setFeature(const QgsFeature &feature)
Convenience function for setting a feature for the context.
QgsFeatureRenderer * renderer()
Returns renderer.
static QString getFeatureDisplayString(const QgsVectorLayer *layer, const QgsFeature &feature)
static QList< double > getDoubleValues(const QgsVectorLayer *layer, const QString &fieldOrExpression, bool &ok, bool selectedOnly=false, int *nullCount=nullptr, QgsFeedback *feedback=nullptr)
Fetches all double values from a specified field name or expression.