3232#include < QComboBox>
3333#include < QLineEdit>
3434#include < QDesktopWidget>
35+ #include < QSlider>
3536
3637// add some nice zoom levels for zoom comboboxes
3738QList<double > QgsLayoutDesignerDialog::sStatusZoomLevelsList { 0.125 , 0.25 , 0.5 , 1.0 , 2.0 , 4.0 , 8.0 };
@@ -149,7 +150,18 @@ QgsLayoutDesignerDialog::QgsLayoutDesignerDialog( QWidget *parent, Qt::WindowFla
149150 connect ( mStatusZoomCombo , static_cast <void ( QComboBox::* )( int )>( &QComboBox::activated ), this , &QgsLayoutDesignerDialog::statusZoomCombo_currentIndexChanged );
150151 connect ( mStatusZoomCombo ->lineEdit (), &QLineEdit::returnPressed, this , &QgsLayoutDesignerDialog::statusZoomCombo_zoomEntered );
151152
153+ mStatusZoomSlider = new QSlider ();
154+ mStatusZoomSlider ->setFixedWidth ( mStatusZoomCombo ->width () );
155+ mStatusZoomSlider ->setOrientation ( Qt::Horizontal );
156+ mStatusZoomSlider ->setMinimum ( 20 );
157+ mStatusZoomSlider ->setMaximum ( 800 );
158+ connect ( mStatusZoomSlider , &QSlider::valueChanged, this , &QgsLayoutDesignerDialog::sliderZoomChanged );
159+
160+ mStatusZoomCombo ->setToolTip ( tr ( " Zoom level" ) );
161+ mStatusZoomSlider ->setToolTip ( tr ( " Zoom level" ) );
162+
152163 mStatusBar ->addPermanentWidget ( mStatusZoomCombo );
164+ mStatusBar ->addPermanentWidget ( mStatusZoomSlider );
153165
154166 mView ->setTool ( mSelectTool );
155167 mView ->setFocus ();
@@ -277,6 +289,11 @@ void QgsLayoutDesignerDialog::statusZoomCombo_zoomEntered()
277289 mView ->setZoomLevel ( zoom.toDouble () / 100 );
278290}
279291
292+ void QgsLayoutDesignerDialog::sliderZoomChanged ( int value )
293+ {
294+ mView ->setZoomLevel ( value / 100.0 );
295+ }
296+
280297void QgsLayoutDesignerDialog::updateStatusZoom ()
281298{
282299 double dpi = QgsApplication::desktop ()->logicalDpiX ();
@@ -290,6 +307,7 @@ void QgsLayoutDesignerDialog::updateStatusZoom()
290307 double zoomLevel = mView ->transform ().m11 () * 100 / scale100;
291308
292309 whileBlocking ( mStatusZoomCombo )->lineEdit ()->setText ( tr ( " %1%" ).arg ( zoomLevel, 0 , ' f' , 1 ) );
310+ whileBlocking ( mStatusZoomSlider )->setValue ( zoomLevel );
293311}
294312
295313QgsLayoutView *QgsLayoutDesignerDialog::view ()
0 commit comments