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(); } } } }