void QgsComposerLegendWidget::updateLegend() { if ( mLegend ) { mLegend->beginCommand( tr( "Legend updated" ) ); QgisApp* app = QgisApp::instance(); if ( !app ) { return; } //get layer id list QStringList layerIdList; QgsMapCanvas* canvas = app->mapCanvas(); if ( canvas ) { QgsMapRenderer* renderer = canvas->mapRenderer(); if ( renderer ) { layerIdList = renderer->layerSet(); } } //and also group info QgsAppLegendInterface legendIface( app->legend() ); QList< GroupLayerInfo > groupInfo = legendIface.groupLayerRelationship(); mLegend->model()->setLayerSetAndGroups( layerIdList, groupInfo ); mLegend->endCommand(); } }
void QgsComposerLegendWidget::on_mAddToolButton_clicked() { if ( !mLegend ) { return; } QStandardItemModel* itemModel = qobject_cast<QStandardItemModel *>( mItemTreeView->model() ); if ( !itemModel ) { return; } QgisApp* app = QgisApp::instance(); if ( !app ) { return; } QgsMapCanvas* canvas = app->mapCanvas(); if ( canvas ) { QList<QgsMapLayer*> layers = canvas->layers(); QgsComposerLegendLayersDialog addDialog( layers ); if ( addDialog.exec() == QDialog::Accepted ) { QgsMapLayer* layer = addDialog.selectedLayer(); if ( layer ) { mLegend->beginCommand( "Legend item added" ); mLegend->model()->addLayer( layer ); mLegend->endCommand(); } } } }