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();
91 slItem->setData( 0, Qt::UserRole, idx );
92 slItem->setIcon( 0, slIcon );
93 auto flags = slItem->flags();
96 flags.setFlag( Qt::ItemIsUserCheckable,
true );
97 slItem->setCheckState( 0, Qt::Unchecked );
101 flags.setFlag( Qt::ItemIsUserCheckable,
false );
103 slItem->setFlags( flags );
104 rootItem->addChild( slItem );
105 slItem->setExpanded(
true );
107 mItems[sl->
id()] = slItem;
111 visitSymbol( slItem, identifier, subSymbol, indexPath );
122 const QgsSymbol *symbol = symbolEntity->symbol();
127 QTreeWidgetItem *symbolItem =
new QTreeWidgetItem( QStringList() << ( mCurrentDescription + leaf.
description ) );
129 symbolItem->setData( 0, Qt::UserRole, mCurrentIdentifier );
130 symbolItem->setIcon( 0, icon );
131 mLayerItem->addChild( symbolItem );
132 symbolItem->setExpanded(
true );
134 visitSymbol( symbolItem, leaf.
identifier, symbol, {} );
140 QString mCurrentDescription;
141 QString mCurrentIdentifier;
142 QTreeWidgetItem *mLayerItem;
144 QHash<QString, QTreeWidgetItem *> &mItems;
145 QPointer<QScreen> mScreen;
151 if ( !mLayer->renderer() )
154 TreeFillVisitor visitor( mTree->invisibleRootItem(), mLayer, mItems, screen() );
155 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.