diff --git a/python/gui/auto_generated/qgsstatusbar.sip.in b/python/gui/auto_generated/qgsstatusbar.sip.in index c4525269c72..6f42218be8e 100644 --- a/python/gui/auto_generated/qgsstatusbar.sip.in +++ b/python/gui/auto_generated/qgsstatusbar.sip.in @@ -88,6 +88,12 @@ Removes any temporary message being shown. .. seealso:: :py:func:`showMessage` %End + + protected: + + virtual void changeEvent( QEvent *event ); + + }; diff --git a/src/app/qgisapp.cpp b/src/app/qgisapp.cpp index 23215ccd622..1fc33d7808a 100644 --- a/src/app/qgisapp.cpp +++ b/src/app/qgisapp.cpp @@ -3000,7 +3000,13 @@ void QgisApp::createStatusBar() //remove borders from children under Windows statusBar()->setStyleSheet( QStringLiteral( "QStatusBar::item {border: none;}" ) ); + // Drop the font size in the status bar by a couple of points + QFont statusBarFont = font(); + statusBarFont.setPointSize( statusBarFont.pointSize() - 2 ); + statusBar()->setFont( statusBarFont ); + mStatusBar = new QgsStatusBar(); + mStatusBar->setFont( statusBarFont ); statusBar()->addPermanentWidget( mStatusBar, 10 ); @@ -3017,13 +3023,9 @@ void QgisApp::createStatusBar() connect( mMapCanvas, &QgsMapCanvas::mapCanvasRefreshed, this, &QgisApp::canvasRefreshFinished ); mTaskManagerWidget = new QgsTaskManagerStatusBarWidget( QgsApplication::taskManager(), mStatusBar ); + mTaskManagerWidget->setFont( statusBarFont ); mStatusBar->addPermanentWidget( mTaskManagerWidget, 0 ); - // Drop the font size in the status bar by a couple of points - QFont statusBarFont = font(); - statusBarFont.setPointSize( statusBarFont.pointSize() - 2 ); - statusBar()->setFont( statusBarFont ); - //coords status bar widget mCoordsEdit = new QgsStatusBarCoordinatesWidget( mStatusBar ); mCoordsEdit->setObjectName( QStringLiteral( "mCoordsEdit" ) ); diff --git a/src/gui/qgsstatusbar.cpp b/src/gui/qgsstatusbar.cpp index 2677f0c7395..4e5bcc67bf9 100644 --- a/src/gui/qgsstatusbar.cpp +++ b/src/gui/qgsstatusbar.cpp @@ -20,6 +20,7 @@ #include #include #include +#include QgsStatusBar::QgsStatusBar( QWidget *parent ) : QWidget( parent ) @@ -89,3 +90,13 @@ void QgsStatusBar::clearMessage() { mLineEdit->setText( QString() ); } + +void QgsStatusBar::changeEvent( QEvent *event ) +{ + QWidget::changeEvent( event ); + + if ( event->type() == QEvent::FontChange ) + { + mLineEdit->setFont( font() ); + } +} diff --git a/src/gui/qgsstatusbar.h b/src/gui/qgsstatusbar.h index 5e32c237e01..81b840dbec7 100644 --- a/src/gui/qgsstatusbar.h +++ b/src/gui/qgsstatusbar.h @@ -100,6 +100,11 @@ class GUI_EXPORT QgsStatusBar : public QWidget */ void clearMessage(); + + protected: + + void changeEvent( QEvent *event ) override; + private: QHBoxLayout *mLayout = nullptr; diff --git a/src/gui/qgstaskmanagerwidget.cpp b/src/gui/qgstaskmanagerwidget.cpp index 72b94b994b2..bd846daa119 100644 --- a/src/gui/qgstaskmanagerwidget.cpp +++ b/src/gui/qgstaskmanagerwidget.cpp @@ -609,11 +609,21 @@ QgsTaskManagerStatusBarWidget::QgsTaskManagerStatusBarWidget( QgsTaskManager *ma QSize QgsTaskManagerStatusBarWidget::sizeHint() const { - int width = static_cast< int >( fontMetrics().width( 'X' ) * 10 * Qgis::UI_SCALE_FACTOR ); + int width = static_cast< int >( fontMetrics().width( 'X' ) * 20 * Qgis::UI_SCALE_FACTOR ); int height = QToolButton::sizeHint().height(); return QSize( width, height ); } +void QgsTaskManagerStatusBarWidget::changeEvent( QEvent *event ) +{ + QToolButton::changeEvent( event ); + + if ( event->type() == QEvent::FontChange ) + { + mProgressBar->setFont( font() ); + } +} + void QgsTaskManagerStatusBarWidget::toggleDisplay() { if ( mFloatingWidget->isVisible() ) diff --git a/src/gui/qgstaskmanagerwidget.h b/src/gui/qgstaskmanagerwidget.h index 7f4d7388812..1ab8cc5d4d4 100644 --- a/src/gui/qgstaskmanagerwidget.h +++ b/src/gui/qgstaskmanagerwidget.h @@ -113,6 +113,10 @@ class GUI_EXPORT QgsTaskManagerStatusBarWidget : public QToolButton QSize sizeHint() const override; + protected: + + void changeEvent( QEvent *event ) override; + private slots: void toggleDisplay();