34 mTree =
new QTreeWidget(
this );
35 mTree->setHeaderHidden(
true );
37 connect( mTree, &QTreeWidget::itemChanged,
this, [&]( QTreeWidgetItem *,
int ) { emit this->
changed(); } );
40 QVBoxLayout *vbox =
new QVBoxLayout();
41 vbox->setContentsMargins( 0, 0, 0, 0 );
42 vbox->addWidget( mTree );
56 TreeFillVisitor( QTreeWidgetItem *layerItem,
const QgsVectorLayer *layer, QHash<QString, QTreeWidgetItem *> &items, QScreen *screen )
57 : mLayerItem( layerItem )
74 void visitSymbol( QTreeWidgetItem *rootItem,
const QString &identifier,
const QgsSymbol *symbol, QVector<int> rootPath )
85 QVector<int> indexPath = rootPath;
86 indexPath.append( idx );
88 QTreeWidgetItem *slItem =
new QTreeWidgetItem();
90 slItem->setData( 0, Qt::UserRole, idx );
91 slItem->setIcon( 0, slIcon );
92 auto flags = slItem->flags();
95 flags.setFlag( Qt::ItemIsUserCheckable,
true );
96 slItem->setCheckState( 0, Qt::Unchecked );
100 flags.setFlag( Qt::ItemIsUserCheckable,
false );
102 slItem->setFlags( flags );
103 rootItem->addChild( slItem );
104 slItem->setExpanded(
true );
106 mItems[sl->
id()] = slItem;
110 visitSymbol( slItem, identifier, subSymbol, indexPath );
121 const QgsSymbol *symbol = symbolEntity->symbol();
126 QTreeWidgetItem *symbolItem =
new QTreeWidgetItem( QStringList() << ( mCurrentDescription + leaf.
description ) );
128 symbolItem->setData( 0, Qt::UserRole, mCurrentIdentifier );
129 symbolItem->setIcon( 0, icon );
130 mLayerItem->addChild( symbolItem );
131 symbolItem->setExpanded(
true );
133 visitSymbol( symbolItem, leaf.
identifier, symbol, {} );
139 QString mCurrentDescription;
140 QString mCurrentIdentifier;
141 QTreeWidgetItem *mLayerItem;
143 QHash<QString, QTreeWidgetItem *> &mItems;
144 QPointer<QScreen> mScreen;
150 if ( !mLayer->renderer() )
153 TreeFillVisitor visitor( mTree->invisibleRootItem(), mLayer, mItems, screen() );
154 mLayer->renderer()->accept( &visitor );
static QIcon symbolLayerPreviewIcon(const QgsSymbolLayer *layer, Qgis::RenderUnit u, QSize size, const QgsMapUnitScale &scale=QgsMapUnitScale(), Qgis::SymbolType parentSymbolType=Qgis::SymbolType::Hybrid, QgsMapLayer *mapLayer=nullptr, const QgsScreenProperties &screen=QgsScreenProperties())
Draws a symbol layer preview to an icon.
static QIcon symbolPreviewIcon(const QgsSymbol *symbol, QSize size, int padding=0, QgsLegendPatchShape *shape=nullptr, const QgsScreenProperties &screen=QgsScreenProperties())
Returns an icon preview for a color ramp.