Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Torvald от Май 31, 2017, 16:07



Название: И снова DPI. Поддержка масштабирования интерфейса
Отправлено: Torvald от Май 31, 2017, 16:07
Пробовал использовать QT_DEVICE_PIXEL_RATIO со значением auto - не работает на windows 10 (на ХР норм).

Пробовал QApplication::setAttribute(Qt::AA_EnableHighDpiScaling, true) - работает плохо. Во-первых, если увеличение в системе стоит 125%, то интерфейс не масштабируется. Если 150% - то масштабируется в два раза. То есть окно может пребывать только в двух состояниях - либо х1, либо х2.
Во-вторых, эта фича появилась в Qt 5.6, а начиная с этой версии на некоторых компьютерах в редких случаях возникает баг: https://bugreports.qt.io/browse/QTBUG-56367
его не исправили вплоть до Qt 5.8 (5.9 только сегодня релизнулся, еще не смотрел - нет проблемного пк). Этот баг проявляется много где (гуи драйвера видеокарты, calibre) и много у кого, в т.ч. и у меня. Поэтому я использую стабильную Qt 5.5.1

Пробовал вручную ставить QT_SCALE_FACTOR - работает идеально, то, что нужно. Но для того, чтобы узнать какое значение ставить, нужно запросить devicePixelRatio, а это можно сделать только после инициализации QApplication, но QT_SCALE_FACTOR нужно ставить до инициализации QApplication...

Короче вопрос: как узнать devicePixelRatio (то, что выставляет пользователь в настройках винды - 100%, 125% и пр) до инициализации QApplication?

Ну либо подскажите как еще можно скейлить гуи