QGIS API Documentation  2.18.21-Las Palmas (9fba24a)
qgscolorwidgetwrapper.cpp
Go to the documentation of this file.
1 /***************************************************************************
2  qgscolorwidgetwrapper.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 
16 #include "qgscolorwidgetwrapper.h"
17 #include <QLayout>
18 
20  : QgsEditorWidgetWrapper( vl, fieldIdx, editor, parent )
21  , mColorButton( nullptr )
22 {
23 }
24 
25 
27 {
28  QColor c;
29  if ( mColorButton )
30  c = mColorButton->color();
31 
32  return c.isValid() ? QVariant( c ) : QVariant( QVariant::Color );
33 }
34 
36 {
37  if ( mColorButton )
38  {
39  whileBlocking( mColorButton )->setColor( QColor() );
40  }
41 }
42 
44 {
45  QWidget* container = new QWidget( parent );
46  QHBoxLayout* layout = new QHBoxLayout();
47  container->setLayout( layout );
48  layout->setMargin( 0 );
49  layout->setContentsMargins( 0, 0, 0, 0 );
50  QgsColorButtonV2* button = new QgsColorButtonV2();
51  button->setContext( QString( "editor" ) );
52  layout->addWidget( button );
53  layout->addStretch();
54  container->setSizePolicy( QSizePolicy::Preferred, QSizePolicy::Minimum );
55  return container;
56 }
57 
59 {
60  mColorButton = qobject_cast<QgsColorButtonV2*>( editor );
61  if ( !mColorButton )
62  {
63  mColorButton = editor->findChild<QgsColorButtonV2*>();
64  }
65 
66  mColorButton->setShowNull( true );
67  connect( mColorButton, SIGNAL( colorChanged( QColor ) ), this, SLOT( valueChanged() ) );
68 }
69 
71 {
72  return mColorButton;
73 }
74 
76 {
77  if ( mColorButton )
78  mColorButton->setColor( !value.isNull() ? QColor( value.toString() ) : QColor() );
79 }
80 
81 void QgsColorWidgetWrapper::updateConstraintWidgetStatus( bool /*constraintValid*/ )
82 {
83  // nothing
84 }
void setContentsMargins(int left, int top, int right, int bottom)
A cross platform button subclass for selecting colors.
void valueChanged()
Will call the value() method to determine the emitted value.
void setContext(const QString &context)
Sets the context string for the color button.
Manages an editor widget Widget and wrapper share the same parent.
void setShowNull(bool showNull)
Sets whether a set to null (clear) option is shown in the button&#39;s drop down menu.
void setValue(const QVariant &value) override
void addWidget(QWidget *widget, int stretch, QFlags< Qt::AlignmentFlag > alignment)
void setLayout(QLayout *layout)
bool isNull() const
void setMargin(int margin)
void setSizePolicy(QSizePolicy)
void showIndeterminateState() override
Sets the widget to display in an indeterminate "mixed value" state.
QgsSignalBlocker< Object > whileBlocking(Object *object)
Temporarily blocks signals from a QObject while calling a single method from the object.
Definition: qgis.h:333
QVariant value() const override
Will be used to access the widget&#39;s value.
void addStretch(int stretch)
void setColor(const QColor &color)
Sets the current color for the button.
void initWidget(QWidget *editor) override
This method should initialize the editor widget with runtime data.
bool valid() const override
Return true if the widget has been properly initialized.
bool connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method, Qt::ConnectionType type)
QObject * parent() const
Represents a vector layer which manages a vector based data sets.
QString toString() const
QWidget * createWidget(QWidget *parent) override
This method should create a new widget with the provided parent.
bool isValid() const
QgsColorWidgetWrapper(QgsVectorLayer *vl, int fieldIdx, QWidget *editor=nullptr, QWidget *parent=nullptr)
T findChild(const QString &name) const