36   QWidget *editor = 
nullptr;
 
   38   if ( 
config( QStringLiteral( 
"Style" ) ).toString() == QLatin1String( 
"Dial" ) )
 
   42   else if ( 
config( QStringLiteral( 
"Style" ) ).toString() == QLatin1String( 
"Slider" ) )
 
   44     editor = 
new QgsSlider( Qt::Horizontal, parent );
 
   50       case QVariant::Double:
 
   53       case QVariant::LongLong:
 
   57         static_cast<QgsDoubleSpinBox *
>( editor )->setLineEditAlignment( Qt::AlignRight );
 
   64         static_cast<QgsSpinBox *
>( editor )->setLineEditAlignment( Qt::AlignRight );
 
   73 static void setupIntEditor( 
const QVariant &min, 
const QVariant &max, 
const QVariant &step, T *slider, 
QgsRangeWidgetWrapper *wrapper )
 
   76   slider->setMinimum( min.isValid() ? min.toInt() : std::numeric_limits<int>::lowest() );
 
   77   slider->setMaximum( max.isValid() ? max.toInt() : std::numeric_limits<int>::max() );
 
   78   slider->setSingleStep( step.isValid() ? step.toInt() : 1 );
 
   79   QObject::connect( slider, SIGNAL( valueChanged( 
int ) ), wrapper, SLOT( emitValueChanged() ) );
 
   84   mDoubleSpinBox = qobject_cast<QDoubleSpinBox *>( editor );
 
   85   mIntSpinBox = qobject_cast<QSpinBox *>( editor );
 
   87   mDial = qobject_cast<QDial *>( editor );
 
   88   mSlider = qobject_cast<QSlider *>( editor );
 
   89   mQgsDial = qobject_cast<QgsDial *>( editor );
 
   90   mQgsSlider = qobject_cast<QgsSlider *>( editor );
 
   92   bool allowNull = 
config( QStringLiteral( 
"AllowNull" ), 
true ).toBool();
 
   94   QVariant min( 
config( QStringLiteral( 
"Min" ) ) );
 
   95   QVariant max( 
config( QStringLiteral( 
"Max" ) ) );
 
   96   QVariant step( 
config( QStringLiteral( 
"Step" ) ) );
 
  101     double stepval = step.isValid() ? step.toDouble() : 1.0;
 
  102     double minval = min.isValid() ? min.toDouble() : std::numeric_limits<double>::lowest();
 
  103     double maxval  = max.isValid() ? max.toDouble() : std::numeric_limits<double>::max();
 
  109     mDoubleSpinBox->setDecimals( precisionval );
 
  111     QgsDoubleSpinBox *qgsWidget = qobject_cast<QgsDoubleSpinBox *>( mDoubleSpinBox );
 
  120       if ( precisionval > 0 )
 
  122         decr = std::pow( 10, -precisionval );
 
  130       mDoubleSpinBox->setMinimum( minval );
 
  131       mDoubleSpinBox->setValue( minval );
 
  132       QgsDoubleSpinBox *doubleSpinBox( qobject_cast<QgsDoubleSpinBox *>( mDoubleSpinBox ) );
 
  138     mDoubleSpinBox->setMinimum( minval );
 
  139     mDoubleSpinBox->setMaximum( maxval );
 
  140     mDoubleSpinBox->setSingleStep( stepval );
 
  141     if ( 
config( QStringLiteral( 
"Suffix" ) ).isValid() )
 
  142       mDoubleSpinBox->setSuffix( 
config( QStringLiteral( 
"Suffix" ) ).toString() );
 
  144     connect( mDoubleSpinBox, 
static_cast < void ( QDoubleSpinBox::* )( 
double ) 
> ( &QDoubleSpinBox::valueChanged ),
 
  147   else if ( mIntSpinBox )
 
  149     QgsSpinBox *qgsWidget = qobject_cast<QgsSpinBox *>( mIntSpinBox );
 
  152     int minval =  min.isValid() ? min.toInt() : std::numeric_limits<int>::lowest();
 
  153     int maxval = max.isValid() ? max.toInt() : std::numeric_limits<int>::max();
 
  154     uint stepval = step.isValid() ? step.toUInt() : 1;
 
  158       int minvalOverflow = uint( minval ) - stepval;
 
  159       if ( minvalOverflow < minval )
 
  161         minval = minvalOverflow;
 
  163       mIntSpinBox->setValue( minval );
 
  164       QgsSpinBox *intSpinBox( qobject_cast<QgsSpinBox *>( mIntSpinBox ) );
 
  170     setupIntEditor( minval, maxval, stepval, mIntSpinBox, 
this );
 
  171     if ( 
config( QStringLiteral( 
"Suffix" ) ).isValid() )
 
  172       mIntSpinBox->setSuffix( 
config( QStringLiteral( 
"Suffix" ) ).toString() );
 
  180       setupIntEditor( min, max, step, mQgsDial, 
this );
 
  181     else if ( mQgsSlider )
 
  182       setupIntEditor( min, max, step, mQgsSlider, 
this );
 
  184       setupIntEditor( min, max, step, mDial, 
this );
 
  186       setupIntEditor( min, max, step, mSlider, 
this );
 
  192   return mSlider || mDial || mQgsDial || mQgsSlider || mIntSpinBox || mDoubleSpinBox;
 
  195 void QgsRangeWidgetWrapper::valueChangedVariant( 
const QVariant &v )
 
  197   if ( v.type() == QVariant::Int )
 
  204   else if ( v.type() == QVariant::LongLong )
 
  211   else if ( v.type() == QVariant::Double )
 
  224   if ( mDoubleSpinBox )
 
  226     const QVariant::Type fieldType = 
field().
type();
 
  229       case QVariant::Double:
 
  230         value = mDoubleSpinBox->value();
 
  233       case QVariant::LongLong:
 
  234         value = 
static_cast< long long >( mDoubleSpinBox->value() );
 
  241     if ( 
value == mDoubleSpinBox->minimum() && 
config( QStringLiteral( 
"AllowNull" ), 
true ).toBool() )
 
  243       value = QVariant( fieldType );
 
  246   else if ( mIntSpinBox )
 
  248     value = mIntSpinBox->value();
 
  249     if ( 
value == mIntSpinBox->minimum() && 
config( QStringLiteral( 
"AllowNull" ), 
true ).toBool() )
 
  258   else if ( mQgsSlider )
 
  264     value = mDial->value();
 
  268     value = mSlider->value();
 
  274 void QgsRangeWidgetWrapper::updateValues( 
const QVariant &value, 
const QVariantList & )
 
  276   if ( mDoubleSpinBox )
 
  278     if ( 
value.isNull() && 
config( QStringLiteral( 
"AllowNull" ), 
true ).toBool() )
 
  280       mDoubleSpinBox->setValue( mDoubleSpinBox->minimum() );
 
  284       mDoubleSpinBox->setValue( 
value.toDouble() );
 
  290     if ( 
value.isNull() && 
config( QStringLiteral( 
"AllowNull" ), 
true ).toBool() )
 
  292       mIntSpinBox->setValue( mIntSpinBox->minimum() );
 
  296       mIntSpinBox->setValue( 
value.toInt() );
 
  304   else if ( mQgsSlider )
 
  310     mDial->setValue( 
value.toInt() );
 
  314     mSlider->setValue( 
value.toInt() );
 
static QString nullRepresentation()
This string is used to represent the value NULL throughout QGIS.
void setValue(const QVariant &value)
QVariant variantValue() const
The QgsSpinBox is a spin box with a clear button that will set the value to the defined clear value.
void setSpecialValueText(const QString &txt)
Set the special-value text to be txt If set, the spin box will display this text instead of a numeric...
void setShowClearButton(bool showClearButton)
Sets whether the widget will show a clear button.
Encapsulate a field in an attribute table or data source.
bool convertCompatible(QVariant &v, QString *errorMessage=nullptr) const
Converts the provided variant to a compatible format.
QgsField at(int i) const
Returns the field at particular index (must be in range 0..N-1).
void setValue(const QVariant &value)
QVariant variantValue() const
The QgsSpinBox is a spin box with a clear button that will set the value to the defined clear value.
void setShowClearButton(bool showClearButton)
Sets whether the widget will show a clear button.
void setSpecialValueText(const QString &txt)
Set the special-value text to be txt If set, the spin box will display this text instead of a numeric...
Represents a vector layer which manages a vector based data sets.
QgsFields fields() const FINAL
Returns the list of fields of this layer.
#define Q_NOWARN_DEPRECATED_POP
#define Q_NOWARN_DEPRECATED_PUSH