Как изменить логический DPI для приложения QML?

Я хочу управлять масштабированием pointSize-to-pixel всех текстовых элементов в моем Qt 5.2.1 QML/C++ app.

У меня есть одноэлементный компонент QML со свойствами целевого дисплея, такими как ширина, высота и шаг точки, который вычисляет соответствующие размеры пикселей для общих размеров, таких как рекомендуемый размер в пикселях для кнопки сенсорного экрана. Это отлично работает для элементов управления, которые я пишу, но текстовый элемент имеет отлично шрифт.pointSize что я хотел бы использовать, если я могу просто установить логический DPI, используемый для масштабирования текста.

Я использую это для имитации целевых устройств с очень разными DPI экрана при отладке на моем экране разработки 96 DPI. Например, я хотел бы запустить свое приложение, которое нацелено на дисплей 1280x720 133DPI и имеет такой элемент, как:

Text { font.pointSize: 72; text: “Xy” }

дисплей высотой 133 пикселя, а не текст высотой 96 пикселей, который я получаю, потому что ОС сообщает Qt, что у меня есть монитор 96 DPI. Я хочу переопределить логическое масштабирование DPI для моего приложения.

Я вижу logicalDotsPerInchX по списку Qscreenбыл QGuiApplication. Существует множество документации о том, как получить логический DPI. Но я не могу найти никакой информации о том, как это изменить.

Как я могу изменить логический DPI для моего приложения Qt?

1 ответов


Я не думаю, что вы можете просто изменить значения DPI в классе QScreen (есть только общедоступные методы геттера). Возможно, есть некоторые "хаки" для этой проблемы, если вы измените класс QScreen и добавите публичный сеттер или что-то самостоятельно, а затем перекомпилируете Qt, но это может быть некоторой работой и займет много времени...

другим решением может быть просто добавить масштабный коэффициент к размерам шрифта? Я не знаю, сколько у вас есть, но это можно просто сделать в QML, и я использую что-то вроде этого даже для настройки производства, чтобы правильно масштабировать шрифты и другие размеры устройства. Ты мог бы!--0-->или просто определите свое пользовательское свойство QML и умножьте его на все размеры шрифта? если вы сделаете это, вы можете динамически изменять размеры во время работы приложения.