Browse Source

Delegate GUI scaling work to Qt

Set Qt::AA_EnableHighDpiScaling application attribute when Qt 5.14.x or
newer is used. This fixes a lot of scaling issues on HiDPI displays.

Unfortunately, this flag must be set only before QApllication object
creation, so the only one place where it can be done is main().
adaptive-webui-19844
Nick Korotysh 5 years ago
parent
commit
d49d7c1d82
No known key found for this signature in database
GPG Key ID: 7D0D4117C97CCC46
  1. 6
      src/app/main.cpp
  2. 5
      src/gui/utils.cpp

6
src/app/main.cpp

@ -133,6 +133,12 @@ int main(int argc, char *argv[]) @@ -133,6 +133,12 @@ int main(int argc, char *argv[])
// We must save it here because QApplication constructor may change it
bool isOneArg = (argc == 2);
#if !defined(DISABLE_GUI) && (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0))
// Attribute Qt::AA_EnableHighDpiScaling must be set before QCoreApplication is created
if (qgetenv("QT_ENABLE_HIGHDPI_SCALING").isEmpty() && qgetenv("QT_AUTO_SCREEN_SCALE_FACTOR").isEmpty())
Application::setAttribute(Qt::AA_EnableHighDpiScaling, true);
#endif
try {
// Create Application
const QString appId = QLatin1String("qBittorrent-") + Utils::Misc::getUserIDString();

5
src/gui/utils.cpp

@ -62,6 +62,10 @@ void Utils::Gui::resize(QWidget *widget, const QSize &newSize) @@ -62,6 +62,10 @@ void Utils::Gui::resize(QWidget *widget, const QSize &newSize)
qreal Utils::Gui::screenScalingFactor(const QWidget *widget)
{
#if (QT_VERSION >= QT_VERSION_CHECK(5, 14, 0))
Q_UNUSED(widget);
return 1;
#else
if (!widget)
return 1;
@ -77,6 +81,7 @@ qreal Utils::Gui::screenScalingFactor(const QWidget *widget) @@ -77,6 +81,7 @@ qreal Utils::Gui::screenScalingFactor(const QWidget *widget)
#else
return widget->devicePixelRatioF();
#endif // Q_OS_WIN
#endif // QT_VERSION
}
QPixmap Utils::Gui::scaledPixmap(const QIcon &icon, const QWidget *widget, const int height)

Loading…
Cancel
Save