@@ -61,6 +61,8 @@ QgsColorRampShaderWidget::QgsColorRampShaderWidget( QWidget *parent )
61
61
contextMenu->addAction ( tr ( " Change Color…" ), this , SLOT ( changeColor () ) );
62
62
contextMenu->addAction ( tr ( " Change Opacity…" ), this , SLOT ( changeOpacity () ) );
63
63
64
+ mSwatchDelegate = new QgsColorSwatchDelegate ( this );
65
+ mColormapTreeWidget ->setItemDelegateForColumn ( ColorColumn, mSwatchDelegate );
64
66
mColormapTreeWidget ->setColumnWidth ( ColorColumn, 50 );
65
67
mColormapTreeWidget ->setContextMenuPolicy ( Qt::CustomContextMenu );
66
68
mColormapTreeWidget ->setSelectionMode ( QAbstractItemView::ExtendedSelection );
@@ -135,7 +137,7 @@ QgsColorRampShader QgsColorRampShaderWidget::shader() const
135
137
}
136
138
QgsColorRampShader::ColorRampItem newColorRampItem;
137
139
newColorRampItem.value = currentItem->text ( ValueColumn ).toDouble ();
138
- newColorRampItem.color = currentItem->background ( ColorColumn ). color ();
140
+ newColorRampItem.color = currentItem->data ( ColorColumn, Qt::EditRole ). value <QColor> ();
139
141
newColorRampItem.label = currentItem->text ( LabelColumn );
140
142
colorRampItems.append ( newColorRampItem );
141
143
}
@@ -264,7 +266,7 @@ void QgsColorRampShaderWidget::mAddEntryButton_clicked()
264
266
{
265
267
QgsTreeWidgetItemObject *newItem = new QgsTreeWidgetItemObject ( mColormapTreeWidget );
266
268
newItem->setText ( ValueColumn, QStringLiteral ( " 0" ) );
267
- newItem->setBackground ( ColorColumn, QBrush ( QColor ( Qt::magenta ) ) );
269
+ newItem->setData ( ColorColumn, Qt::EditRole, QColor ( Qt::magenta ) );
268
270
newItem->setText ( LabelColumn, QString () );
269
271
newItem->setFlags ( Qt::ItemIsEnabled | Qt::ItemIsEditable | Qt::ItemIsSelectable );
270
272
connect ( newItem, &QgsTreeWidgetItemObject::itemEdited,
@@ -325,7 +327,7 @@ void QgsColorRampShaderWidget::classify()
325
327
{
326
328
QgsTreeWidgetItemObject *newItem = new QgsTreeWidgetItemObject ( mColormapTreeWidget );
327
329
newItem->setText ( ValueColumn, QString::number ( it->value , ' g' , 15 ) );
328
- newItem->setBackground ( ColorColumn, QBrush ( it->color ) );
330
+ newItem->setData ( ColorColumn, Qt::EditRole, it->color );
329
331
newItem->setText ( LabelColumn, it->label );
330
332
newItem->setFlags ( Qt::ItemIsEnabled | Qt::ItemIsEditable | Qt::ItemIsSelectable );
331
333
connect ( newItem, &QgsTreeWidgetItemObject::itemEdited,
@@ -379,7 +381,7 @@ void QgsColorRampShaderWidget::populateColormapTreeWidget( const QList<QgsColorR
379
381
{
380
382
QgsTreeWidgetItemObject *newItem = new QgsTreeWidgetItemObject ( mColormapTreeWidget );
381
383
newItem->setText ( ValueColumn, QString::number ( it->value , ' g' , 15 ) );
382
- newItem->setBackground ( ColorColumn, QBrush ( it->color ) );
384
+ newItem->setData ( ColorColumn, Qt::EditRole, it->color );
383
385
newItem->setText ( LabelColumn, it->label );
384
386
newItem->setFlags ( Qt::ItemIsEnabled | Qt::ItemIsEditable | Qt::ItemIsSelectable );
385
387
connect ( newItem, &QgsTreeWidgetItemObject::itemEdited,
@@ -545,7 +547,7 @@ void QgsColorRampShaderWidget::mExportToFileButton_clicked()
545
547
{
546
548
continue ;
547
549
}
548
- color = currentItem->background ( ColorColumn ). color ();
550
+ color = currentItem->data ( ColorColumn, Qt::EditRole ). value <QColor> ();
549
551
outputStream << currentItem->text ( ValueColumn ).toDouble () << ' ,' ;
550
552
outputStream << color.red () << ' ,' << color.green () << ' ,' << color.blue () << ' ,' << color.alpha () << ' ,' ;
551
553
if ( currentItem->text ( LabelColumn ).isEmpty () )
@@ -580,10 +582,10 @@ void QgsColorRampShaderWidget::mColormapTreeWidget_itemDoubleClicked( QTreeWidge
580
582
if ( column == ColorColumn )
581
583
{
582
584
item->setFlags ( Qt::ItemIsEnabled | Qt::ItemIsSelectable );
583
- QColor newColor = QgsColorDialog::getColor ( item->background ( column ). color (), this , QStringLiteral ( " Change Color" ), true );
585
+ QColor newColor = QgsColorDialog::getColor ( item->data ( column, Qt::EditRole ). value <QColor> (), this , QStringLiteral ( " Change Color" ), true );
584
586
if ( newColor.isValid () )
585
587
{
586
- item->setBackground ( ColorColumn, QBrush ( newColor ) );
588
+ item->setData ( ColorColumn, Qt::EditRole, newColor );
587
589
loadMinimumMaximumFromTree ();
588
590
emit widgetChanged ();
589
591
}
@@ -642,7 +644,7 @@ void QgsColorRampShaderWidget::setFromShader( const QgsColorRampShader &colorRam
642
644
{
643
645
QgsTreeWidgetItemObject *newItem = new QgsTreeWidgetItemObject ( mColormapTreeWidget );
644
646
newItem->setText ( ValueColumn, QString::number ( it->value , ' g' , 15 ) );
645
- newItem->setBackground ( ColorColumn, QBrush ( it->color ) );
647
+ newItem->setData ( ColorColumn, Qt::EditRole, it->color );
646
648
newItem->setText ( LabelColumn, it->label );
647
649
newItem->setFlags ( Qt::ItemIsEnabled | Qt::ItemIsEditable | Qt::ItemIsSelectable );
648
650
connect ( newItem, &QgsTreeWidgetItemObject::itemEdited,
@@ -753,13 +755,13 @@ void QgsColorRampShaderWidget::changeColor()
753
755
}
754
756
QTreeWidgetItem *firstItem = itemList.first ();
755
757
756
- QColor newColor = QgsColorDialog::getColor ( firstItem->background ( ColorColumn ). color (), this , QStringLiteral ( " Change Color" ), true );
758
+ QColor newColor = QgsColorDialog::getColor ( firstItem->data ( ColorColumn, Qt::EditRole ). value <QColor> (), this , QStringLiteral ( " Change Color" ), true );
757
759
if ( newColor.isValid () )
758
760
{
759
761
Q_FOREACH ( QTreeWidgetItem *item, itemList )
760
762
{
761
763
item->setFlags ( Qt::ItemIsEnabled | Qt::ItemIsSelectable );
762
- item->setBackground ( ColorColumn, QBrush ( newColor ) );
764
+ item->setData ( ColorColumn, Qt::EditRole, newColor );
763
765
}
764
766
765
767
loadMinimumMaximumFromTree ();
@@ -778,16 +780,16 @@ void QgsColorRampShaderWidget::changeOpacity()
778
780
QTreeWidgetItem *firstItem = itemList.first ();
779
781
780
782
bool ok;
781
- double oldOpacity = firstItem->background ( ColorColumn ). color ().alpha () / 255 * 100 ;
783
+ double oldOpacity = firstItem->data ( ColorColumn, Qt::EditRole ). value <QColor> ().alpha () / 255 * 100 ;
782
784
double opacity = QInputDialog::getDouble ( this , tr ( " Opacity" ), tr ( " Change color opacity [%]" ), oldOpacity, 0.0 , 100.0 , 0 , &ok );
783
785
if ( ok )
784
786
{
785
787
int newOpacity = static_cast <int >( opacity / 100 * 255 );
786
788
Q_FOREACH ( QTreeWidgetItem *item, itemList )
787
789
{
788
- QColor newColor = item->background ( ColorColumn ). color ();
790
+ QColor newColor = item->data ( ColorColumn, Qt::EditRole ). value <QColor> ();
789
791
newColor.setAlpha ( newOpacity );
790
- item->setBackground ( ColorColumn, QBrush ( newColor ) );
792
+ item->setData ( ColorColumn, Qt::EditRole, newColor );
791
793
}
792
794
793
795
loadMinimumMaximumFromTree ();
0 commit comments