QGIS API Documentation 3.99.0-Master (2fe06baccd8)
Loading...
Searching...
No Matches
qgsenumerationwidgetwrapper.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgsenumerationwidgetwrapper.cpp
3 --------------------------------------
4 Date : 5.1.2014
5 Copyright : (C) 2014 Matthias Kuhn
6 Email : matthias at opengis dot ch
7 ***************************************************************************
8 * *
9 * This program is free software; you can redistribute it and/or modify *
10 * it under the terms of the GNU General Public License as published by *
11 * the Free Software Foundation; either version 2 of the License, or *
12 * (at your option) any later version. *
13 * *
14 ***************************************************************************/
15
17
19#include "qgsvectorlayer.h"
20
21#include "moc_qgsenumerationwidgetwrapper.cpp"
22
24 : QgsEditorWidgetWrapper( layer, fieldIdx, editor, parent )
25
26{
27}
28
29
31{
32 QVariant value;
33
34 if ( mComboBox )
35 value = mComboBox->currentData();
36
37 return value;
38}
39
41{
42 if ( mComboBox )
43 {
44 whileBlocking( mComboBox )->setCurrentIndex( -1 );
45 }
46}
47
49{
50 QComboBox *combo = new QComboBox( parent );
51 combo->setMinimumContentsLength( 1 );
52 combo->setSizeAdjustPolicy( QComboBox::SizeAdjustPolicy::AdjustToMinimumContentsLengthWithIcon );
53 return combo;
54}
55
57{
58 mComboBox = qobject_cast<QComboBox *>( editor );
59
60 if ( mComboBox )
61 {
62 QStringList enumValues;
63 layer()->dataProvider()->enumValues( fieldIdx(), enumValues );
64
65 const auto constEnumValues = enumValues;
66 for ( const QString &s : constEnumValues )
67 {
68 mComboBox->addItem( s, s );
69 }
70 connect( mComboBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, static_cast<void ( QgsEditorWidgetWrapper::* )()>( &QgsEditorWidgetWrapper::emitValueChanged ) );
71 }
72}
73
75{
76 return mComboBox;
77}
78
79void QgsEnumerationWidgetWrapper::updateValues( const QVariant &value, const QVariantList & )
80{
81 if ( mComboBox )
82 {
83 mComboBox->setCurrentIndex( mComboBox->findData( value ) );
84 }
85}
int fieldIdx() const
Access the field index.
QgsEditorWidgetWrapper(QgsVectorLayer *vl, int fieldIdx, QWidget *editor=nullptr, QWidget *parent=nullptr)
Create a new widget wrapper.
void emitValueChanged()
Will call the value() method to determine the emitted value.
QVariant value() const override
Will be used to access the widget's value.
QWidget * createWidget(QWidget *parent) override
This method should create a new widget with the provided parent.
void initWidget(QWidget *editor) override
This method should initialize the editor widget with runtime data.
bool valid() const override
Returns true if the widget has been properly initialized.
QgsEnumerationWidgetWrapper(QgsVectorLayer *layer, int fieldIdx, QWidget *editor=nullptr, QWidget *parent=nullptr)
Constructor for QgsEnumerationWidgetWrapper.
void showIndeterminateState() override
Sets the widget to display in an indeterminate "mixed value" state.
virtual void enumValues(int index, QStringList &enumList) const
Returns the possible enum values of an attribute.
Represents a vector layer which manages a vector based dataset.
QgsVectorDataProvider * dataProvider() final
Returns the layer's data provider, it may be nullptr.
QgsVectorLayer * layer() const
Returns the vector layer associated with the widget.
QgsSignalBlocker< Object > whileBlocking(Object *object)
Temporarily blocks signals from a QObject while calling a single method from the object.
Definition qgis.h:6511