QGIS API Documentation  3.6.0-Noosa (5873452)
qgsclassificationwidgetwrapper.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  qgsclassificationwidgetwrapper.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 QgsClassificationWidgetWrapper::QgsClassificationWidgetWrapper( QgsVectorLayer *layer, int fieldIdx, QWidget *editor, QWidget *parent )
22  : QgsEditorWidgetWrapper( layer, fieldIdx, editor, parent )
23 
24 {
25 }
26 
28 {
29  return mComboBox->currentData();
30 }
31 
33 {
34  whileBlocking( mComboBox )->setCurrentIndex( -1 );
35 }
36 
38 {
39  return new QComboBox( parent );
40 }
41 
43 {
44  mComboBox = qobject_cast<QComboBox *>( editor );
45 
46  if ( mComboBox )
47  {
48  const QgsCategorizedSymbolRenderer *csr = dynamic_cast<const QgsCategorizedSymbolRenderer *>( layer()->renderer() );
49  if ( csr )
50  {
51  const QgsCategoryList categories = csr->categories();
52  for ( int i = 0; i < categories.size(); i++ )
53  {
54  QString label = categories[i].label();
55  QString value = categories[i].value().toString();
56  if ( label.isEmpty() )
57  label = value;
58 
59  mComboBox->addItem( label, value );
60  }
61  }
62 
63  connect( mComboBox, static_cast<void ( QComboBox::* )( int )>( &QComboBox::currentIndexChanged ),
64  this, static_cast<void ( QgsEditorWidgetWrapper::* )()>( &QgsEditorWidgetWrapper::emitValueChanged ) );
65  }
66 }
67 
69 {
70  return mComboBox;
71 }
72 
74 {
75  mComboBox->setCurrentIndex( mComboBox->findData( value ) );
76 }
void emitValueChanged()
Will call the value() method to determine the emitted value.
QWidget * createWidget(QWidget *parent) override
This method should create a new widget with the provided parent.
Manages an editor widget Widget and wrapper share the same parent.
QgsClassificationWidgetWrapper(QgsVectorLayer *layer, int fieldIdx, QWidget *editor=nullptr, QWidget *parent=nullptr)
Constructor for QgsClassificationWidgetWrapper.
QVariant value() const override
Will be used to access the widget&#39;s value.
void initWidget(QWidget *editor) override
This method should initialize the editor widget with runtime data.
void showIndeterminateState() override
Sets the widget to display in an indeterminate "mixed value" state.
QList< QgsRendererCategory > QgsCategoryList
const QgsCategoryList & categories() const
Returns a list of all categories recognized by the renderer.
QgsFeatureRenderer * renderer()
Returns renderer.
bool valid() const override
Returns true if the widget has been properly initialized.
QgsSignalBlocker< Object > whileBlocking(Object *object)
Temporarily blocks signals from a QObject while calling a single method from the object.
Definition: qgis.h:212
void setValue(const QVariant &value) override
QgsVectorLayer * layer() const
Returns the vector layer associated with the widget.
Represents a vector layer which manages a vector based data sets.