diff --git a/extern/osgQt/include/osgQt/osgQOpenGLWidget.hpp b/extern/osgQt/include/osgQt/osgQOpenGLWidget.hpp index 8677b146f8..deb79469e9 100644 --- a/extern/osgQt/include/osgQt/osgQOpenGLWidget.hpp +++ b/extern/osgQt/include/osgQt/osgQOpenGLWidget.hpp @@ -63,6 +63,8 @@ protected: virtual void setDefaultDisplaySettings(); void createRenderer(); + + bool event(QEvent* e) override; }; #endif // OSGQOPENGLWIDGET_H diff --git a/extern/osgQt/osgQOpenGLWidget.cpp b/extern/osgQt/osgQOpenGLWidget.cpp index 28a510b296..a7de4b8089 100644 --- a/extern/osgQt/osgQOpenGLWidget.cpp +++ b/extern/osgQt/osgQOpenGLWidget.cpp @@ -48,10 +48,7 @@ void osgQOpenGLWidget::initializeGL() void osgQOpenGLWidget::resizeGL(int w, int h) { Q_ASSERT(m_renderer); - QScreen* screen = windowHandle() - && windowHandle()->screen() ? windowHandle()->screen() : - qApp->screens().front(); - m_renderer->resize(w * screen->devicePixelRatio(), h * screen->devicePixelRatio()); + m_renderer->resize(w * devicePixelRatio(), h * devicePixelRatio()); } void osgQOpenGLWidget::paintGL() @@ -94,3 +91,12 @@ void osgQOpenGLWidget::createRenderer() m_renderer->setupOSG(); } + +bool osgQOpenGLWidget::event(QEvent* e) +{ +#if QT_VERSION >= QT_VERSION_CHECK(6, 6, 0) + if (m_renderer && e->type() == QEvent::DevicePixelRatioChange) + m_renderer->resize(width() * devicePixelRatio(), height() * devicePixelRatio()); +#endif + return QOpenGLWidget::event(e); +} \ No newline at end of file