diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/corelib/global/qnamespace.h | 1 | ||||
-rw-r--r-- | src/corelib/global/qnamespace.qdoc | 5 | ||||
-rw-r--r-- | src/gui/kernel/qhighdpiscaling.cpp | 8 |
3 files changed, 14 insertions, 0 deletions
diff --git a/src/corelib/global/qnamespace.h b/src/corelib/global/qnamespace.h index fc5207fa25..9381f01639 100644 --- a/src/corelib/global/qnamespace.h +++ b/src/corelib/global/qnamespace.h @@ -496,6 +496,7 @@ public: AA_UseSoftwareOpenGL = 17, AA_ShareOpenGLContexts = 18, AA_SetPalette = 19, + AA_NoHighDpiScaling = 20, // Add new attributes before this line AA_AttributeCount diff --git a/src/corelib/global/qnamespace.qdoc b/src/corelib/global/qnamespace.qdoc index 970e1b1f42..4aed887b19 100644 --- a/src/corelib/global/qnamespace.qdoc +++ b/src/corelib/global/qnamespace.qdoc @@ -197,6 +197,11 @@ \value AA_SetPalette Indicates whether a palette was explicitly set on the QApplication/QGuiApplication. This value has been added in Qt 5.5. + \value AA_NoHighDpiScaling Disables all high-DPI scaling in Qt, exposing window + system coordinates. Note that the window system may do its own scaling, + so this does not guarantee that QPaintDevice::devicePixelRatio() will + be equal to 1. This value has been added in Qt 5.6. + The following values are obsolete: \value AA_ImmediateWidgetCreation This attribute is no longer fully diff --git a/src/gui/kernel/qhighdpiscaling.cpp b/src/gui/kernel/qhighdpiscaling.cpp index e574a79370..46c9f671df 100644 --- a/src/gui/kernel/qhighdpiscaling.cpp +++ b/src/gui/kernel/qhighdpiscaling.cpp @@ -142,6 +142,11 @@ QDpi QHighDpiScaling::m_logicalDpi; // The scaled logical DPI of the primary scr */ void QHighDpiScaling::initHighDpiScaling() { + if (QCoreApplication::testAttribute(Qt::AA_NoHighDpiScaling)) { + m_factor = 1; + m_active = false; + return; + } m_factor = initialScaleFactor(); bool usePlatformPluginPixelDensity = qEnvironmentVariableIsSet(autoScreenEnvVar) || qgetenv(legacyDevicePixelEnvVar).toLower() == "auto"; @@ -157,6 +162,9 @@ void QHighDpiScaling::initHighDpiScaling() void QHighDpiScaling::updateHighDpiScaling() { + if (QCoreApplication::testAttribute(Qt::AA_NoHighDpiScaling)) + return; + if (m_usePixelDensity && !m_pixelDensityScalingActive) { Q_FOREACH (QScreen *screen, QGuiApplication::screens()) { if (!qFuzzyCompare(screenSubfactor(screen->handle()), qreal(1))) { |