QGIS API Documentation 3.37.0-Master (fdefdf9c27f)
qgskeyvaluewidgetwrapper.cpp
Go to the documentation of this file.
1/***************************************************************************
2 qgskeyvaluewidgetwrapper.cpp
3 --------------------------------------
4 Date : 08.2016
5 Copyright : (C) 2016 Patrick Valsecchi
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#include "qgskeyvaluewidget.h"
18#include "qgsattributeform.h"
19
20QgsKeyValueWidgetWrapper::QgsKeyValueWidgetWrapper( QgsVectorLayer *layer, int fieldIdx, QWidget *editor, QWidget *parent ):
21 QgsEditorWidgetWrapper( layer, fieldIdx, editor, parent )
22{
23}
24
26{
27 if ( !mWidget ) return QVariant( QVariant::Map );
28 return mWidget->map();
29}
30
32{
33 mWidget->setMap( QVariantMap() );
34}
35
36QWidget *QgsKeyValueWidgetWrapper::createWidget( QWidget *parent )
37{
38 if ( isInTable( parent ) )
39 {
40 // if to be put in a table, draw a border and set a decent size
41 QFrame *ret = new QFrame( parent );
42 ret->setFrameShape( QFrame::StyledPanel );
43 QHBoxLayout *layout = new QHBoxLayout( ret );
44 layout->addWidget( new QgsKeyValueWidget( ret ) );
45 ret->setMinimumSize( QSize( 320, 110 ) );
46 return ret;
47 }
48 else
49 {
50 return new QgsKeyValueWidget( parent );
51 }
52}
53
55{
56 mWidget = qobject_cast<QgsKeyValueWidget *>( editor );
57 if ( !mWidget )
58 {
59 mWidget = editor->findChild<QgsKeyValueWidget *>();
60 }
61
62 connect( mWidget, &QgsKeyValueWidget::valueChanged, this, &QgsKeyValueWidgetWrapper::onValueChanged );
63}
64
66{
67 return true;
68}
69
70void QgsKeyValueWidgetWrapper::updateValues( const QVariant &value, const QVariantList & )
71{
72 mWidget->setMap( value.toMap() );
73}
74
75void QgsKeyValueWidgetWrapper::updateConstraintWidgetStatus()
76{
77 // Nothing
78}
79
80void QgsKeyValueWidgetWrapper::onValueChanged()
81{
83}
Manages an editor widget Widget and wrapper share the same parent.
static bool isInTable(const QWidget *parent)
Check if the given widget or one of its parent is a QTableView.
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 showIndeterminateState() override
Sets the widget to display in an indeterminate "mixed value" state.
QgsKeyValueWidgetWrapper(QgsVectorLayer *layer, int fieldIdx, QWidget *editor=nullptr, QWidget *parent=nullptr)
Constructor for QgsKeyValueWidgetWrapper.
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.
Widget allowing to edit a QVariantMap, using a table.
void setMap(const QVariantMap &map)
Set the initial value of the widget.
void valueChanged()
Emitted each time a key or a value is changed.
Represents a vector layer which manages a vector based data sets.