From f1e6745fe75d7366ed1add3a974ea833b3ccd0c9 Mon Sep 17 00:00:00 2001 From: Denis Rouzaud Date: Wed, 20 Nov 2019 08:07:09 +0100 Subject: [PATCH] [quick] add utility method to select feature using their IDs from QML (#32735) * [quick] add utility method to select feature using their IDs from QML * Update qgsquickutils.cpp --- src/quickgui/qgsquickutils.cpp | 8 ++++++++ src/quickgui/qgsquickutils.h | 11 +++++++++++ 2 files changed, 19 insertions(+) diff --git a/src/quickgui/qgsquickutils.cpp b/src/quickgui/qgsquickutils.cpp index 4839ada363f..8830c606327 100644 --- a/src/quickgui/qgsquickutils.cpp +++ b/src/quickgui/qgsquickutils.cpp @@ -375,6 +375,14 @@ QString QgsQuickUtils::evaluateExpression( const QgsQuickFeatureLayerPair &pair, return expr.evaluate( &context ).toString(); } +void QgsQuickUtils::selectFeaturesInLayer( QgsVectorLayer *layer, const QList &fids, QgsVectorLayer::SelectBehavior behavior ) +{ + QgsFeatureIds qgsFids; + for ( const int &fid : fids ) + qgsFids << fid; + layer->selectByIds( qgsFids, behavior ); +} + qreal QgsQuickUtils::screenDensity() const { return mScreenDensity; diff --git a/src/quickgui/qgsquickutils.h b/src/quickgui/qgsquickutils.h index 48c5c299b8e..ed4ccf2aaca 100644 --- a/src/quickgui/qgsquickutils.h +++ b/src/quickgui/qgsquickutils.h @@ -253,6 +253,17 @@ class QUICK_EXPORT QgsQuickUtils: public QObject */ Q_INVOKABLE static QString evaluateExpression( const QgsQuickFeatureLayerPair &pair, QgsProject *activeProject, const QString &expression ); + /** + * Selects features in a layer + * This method is required since QML cannot perform the conversion of a feature ID to a QgsFeatureId (i.e. a qint64) + * \param layer the vector layer + * \param fids the list of feature IDs + * \param behavior the selection behavior + * + * \since QGIS 3.12 + */ + Q_INVOKABLE static void selectFeaturesInLayer( QgsVectorLayer *layer, const QList &fids, QgsVectorLayer::SelectBehavior behavior = QgsVectorLayer::SetSelection ); + private: static void formatToMetricDistance( double srcDistance, QgsUnitTypes::DistanceUnit srcUnits,