QGIS API Documentation 4.1.0-Master (5bf3c20f3c9)
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
30{
31 QVariant value;
32
33 if ( mComboBox )
34 value = mComboBox->currentData();
35
36 return value;
37}
38
40{
41 if ( mComboBox )
42 {
43 whileBlocking( mComboBox )->setCurrentIndex( -1 );
44 }
45}
46
48{
49 QComboBox *combo = new QComboBox( parent );
50 combo->setMinimumContentsLength( 1 );
51 combo->setSizeAdjustPolicy( QComboBox::SizeAdjustPolicy::AdjustToMinimumContentsLengthWithIcon );
52 return combo;
53}
54
56{
57 mComboBox = qobject_cast<QComboBox *>( editor );
58
59 if ( mComboBox )
60 {
61 QStringList enumValues;
62 layer()->dataProvider()->enumValues( fieldIdx(), enumValues );
63
64 const auto constEnumValues = enumValues;
65 for ( const QString &s : constEnumValues )
66 {
67 mComboBox->addItem( s, s );
68 }
69 connect( mComboBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ), this, static_cast<void ( QgsEditorWidgetWrapper::* )()>( &QgsEditorWidgetWrapper::emitValueChanged ) );
70 }
71}
72
74{
75 return mComboBox;
76}
77
78void QgsEnumerationWidgetWrapper::updateValues( const QVariant &value, const QVariantList & )
79{
80 if ( mComboBox )
81 {
82 mComboBox->setCurrentIndex( mComboBox->findData( value ) );
83 }
84}
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:6880