QGIS API Documentation  2.8.2-Wien
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
qgsvaluemapwidgetwrapper.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  qgsvaluemapwidgetwrapper.cpp
3  --------------------------------------
4  Date : 5.1.2014
5  Copyright : (C) 2014 Matthias Kuhn
6  Email : matthias dot kuhn at gmx 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 
18 QgsValueMapWidgetWrapper::QgsValueMapWidgetWrapper( QgsVectorLayer* vl, int fieldIdx, QWidget* editor, QWidget* parent )
19  : QgsEditorWidgetWrapper( vl, fieldIdx, editor, parent )
20  , mComboBox( NULL )
21 {
22 }
23 
24 
26 {
27  QVariant v;
28 
29  if ( mComboBox )
30  v = mComboBox->itemData( mComboBox->currentIndex() );
31 
32  return v;
33 }
34 
35 QWidget* QgsValueMapWidgetWrapper::createWidget( QWidget* parent )
36 {
37  return new QComboBox( parent );
38 }
39 
40 void QgsValueMapWidgetWrapper::initWidget( QWidget* editor )
41 {
42  mComboBox = qobject_cast<QComboBox*>( editor );
43 
44  if ( mComboBox )
45  {
46  const QgsEditorWidgetConfig cfg = config();
47  QgsEditorWidgetConfig::ConstIterator it = cfg.constBegin();
48 
49  while ( it != cfg.constEnd() )
50  {
51  mComboBox->addItem( it.key(), it.value() );
52  ++it;
53  }
54  connect( mComboBox, SIGNAL( currentIndexChanged( int ) ), this, SLOT( valueChanged() ) );
55  }
56 }
57 
58 void QgsValueMapWidgetWrapper::setValue( const QVariant& value )
59 {
60  if ( mComboBox )
61  mComboBox->setCurrentIndex( mComboBox->findData( value ) );
62 }