22 , mNotSetString( tr(
"Not set" ) )
24 connect(
this,
static_cast<void ( QComboBox::* )(
int )
>( &QComboBox::currentIndexChanged ),
this, [ = ]
26 if ( mLayer && mLayer->isValid() )
28 const int newBand = currentIndex() >= 0 ? currentData().toInt() : -1 ;
29 if ( newBand != mPrevBand )
31 emit
bandChanged( currentIndex() >= 0 ? currentData().toInt() : -1 );
37 connect(
this, &QComboBox::currentTextChanged,
this, [ = ](
const QString & value )
39 if ( !mLayer || !mLayer->isValid() )
42 const int band = value.toInt( &ok );
43 if ( ok && band != mPrevBand )
48 else if ( mShowNotSet && mPrevBand != -1 )
67 if ( !mLayer || !mLayer->dataProvider() || !mLayer->isValid() )
70 const int band = currentText().toInt( &ok );
77 if ( currentIndex() < 0 )
80 return currentData().toInt();
95 addItem( mNotSetString, -1 );
100 if ( provider && mLayer->
isValid() )
102 setEditable(
false );
105 for (
int i = 1; i <= nBands; ++i )
107 addItem( displayBandName( provider, i ), i );
123 setCurrentIndex( 0 );
125 blockSignals(
false );
134 if ( !mLayer || !mLayer->dataProvider() || !mLayer->isValid() )
138 setCurrentIndex( -1 );
139 if ( mPrevBand != -1 )
143 setCurrentText( QString::number( band ) );
147 setCurrentIndex( findData( band ) );
160 mNotSetString =
string.isEmpty() ? tr(
"Not set" ) : string;
172 if ( colorInterp != QLatin1String(
"Undefined" ) )
174 name.append( QStringLiteral(
" (%1)" ).arg( colorInterp ) );
virtual int bandCount() const =0
Gets number of bands.
int currentBand() const
Returns the current band number selected in the combobox, or -1 if no band is selected.
Base class for all map layer types.
void setLayer(QgsMapLayer *layer)
Sets the raster layer for which the bands are listed in the combobox.
This class provides qgis with the ability to render raster datasets onto the mapcanvas.
void setShowNotSetOption(bool show, const QString &string=QString())
Sets whether the combo box should show the "not set" option.
virtual bool isValid() const =0
Returns true if this is a valid layer.
void bandChanged(int band)
Emitted when the currently selected band changes.
QgsRasterBandComboBox(QWidget *parent=nullptr)
Constructor for QgsRasterBandComboBox.
virtual QString colorInterpretationName(int bandNo) const
bool isShowingNotSetOption() const
Returns true if the combo box is showing the "not set" option.
void setBand(int band)
Sets the current band number selected in the combobox.
virtual QString generateBandName(int bandNumber) const
helper function to create zero padded band names
Base class for raster data providers.
QgsRasterLayer * layer() const
Returns the layer currently associated with the combobox.