void QgsLayoutView::setCurrentLayout( QgsLayout *layout ) { setScene( layout ); connect( layout->pageCollection(), &QgsLayoutPageCollection::changed, this, &QgsLayoutView::updateRulers ); updateRulers(); //emit layoutSet, so that designer dialogs can update for the new layout emit layoutSet( layout ); }
void QgsLayoutView::setCurrentLayout( QgsLayout *layout ) { setScene( layout ); connect( layout->pageCollection(), &QgsLayoutPageCollection::changed, this, &QgsLayoutView::viewChanged ); connect( layout, &QgsLayout::selectedItemChanged, this, &QgsLayoutView::itemFocused ); viewChanged(); mSnapMarker.reset( new QgsLayoutViewSnapMarker() ); mSnapMarker->hide(); layout->addItem( mSnapMarker.get() ); mHorizontalSnapLine.reset( createSnapLine() ); mHorizontalSnapLine->hide(); layout->addItem( mHorizontalSnapLine.get() ); mVerticalSnapLine.reset( createSnapLine() ); mVerticalSnapLine->hide(); layout->addItem( mVerticalSnapLine.get() ); if ( mHorizontalRuler ) { connect( &layout->guides(), &QAbstractItemModel::dataChanged, mHorizontalRuler, [ = ] { mHorizontalRuler->update(); } ); connect( &layout->guides(), &QAbstractItemModel::rowsInserted, mHorizontalRuler, [ = ] { mHorizontalRuler->update(); } ); connect( &layout->guides(), &QAbstractItemModel::rowsRemoved, mHorizontalRuler, [ = ] { mHorizontalRuler->update(); } ); connect( &layout->guides(), &QAbstractItemModel::modelReset, mHorizontalRuler, [ = ] { mHorizontalRuler->update(); } ); } if ( mVerticalRuler ) { connect( &layout->guides(), &QAbstractItemModel::dataChanged, mVerticalRuler, [ = ] { mVerticalRuler->update(); } ); connect( &layout->guides(), &QAbstractItemModel::rowsInserted, mVerticalRuler, [ = ] { mVerticalRuler->update(); } ); connect( &layout->guides(), &QAbstractItemModel::rowsRemoved, mVerticalRuler, [ = ] { mVerticalRuler->update(); } ); connect( &layout->guides(), &QAbstractItemModel::modelReset, mVerticalRuler, [ = ] { mVerticalRuler->update(); } ); } //emit layoutSet, so that designer dialogs can update for the new layout emit layoutSet( layout ); }