Я пишу приложение с использованием QML. У меня возникают проблемы, когда я масштабирую свой графический интерфейс с помощью нецелочисленных коэффициентов. Согласно документации, Qt::AA_EnableHighDpiScaling
должен включать независимые от устройства пиксели, поэтому автоматически принимает позаботьтесь о большей части масштабирования:
Атрибут приложения
Qt::AA_EnableHighDpiScaling
, представленный в Qt 5.6, включает автоматическое масштабирование на основе плотности пикселей монитора.
В сообщении в блоге о 5.6, они допускают, что могут быть проблемы:
Вопрос. Поддерживаются ли нецелые коэффициенты масштабирования?
A: Qt использует qreal в API и позволяет устанавливать нецелые коэффициенты масштабирования через
QT_SCALE_FACTOR
. Однако Qt не гарантирует, что в этом случае графика и стили не будут глючить. Стили могут сломаться первыми: стиль слияния, как правило, является наиболее масштабируемым. Плагины платформы Qt округляют сообщаемые коэффициенты масштабирования до ближайшего целого числа.
и в комментарии:
В: Означает ли это, что он по-прежнему работает только с целыми числами? Что происходит с Windows с масштабом 150% DPI?
О: Да, если только вы не установите/не исправите его вручную с помощью
QT_SCALE_FACTOR
. 150% должны затем перейти к 2x.
Так что для меня это приводит к комически большому графическому интерфейсу при масштабировании до 150%. Однако текст масштабируется правильно, что приводит к странным артефактам, таким как большая кнопка с мелким текстом.
Я неправильно понимаю, как это работает, или это просто пока невозможно?
Screen.devicePixelRatio
? Вы сохранилиQt::AA_EnableHighDpiScaling
? 16.05.2017Screen.devicePixelRatio
имеет замечательную документацию: 1.0 на обычных экранах и 2.0 на дисплеях Apple Retina — серьезно? Что это на MS Surface? Что такое нормальный экран? Я не осмелился использовать это :D 16.05.2017Screen.devicePixelRatio
возвращаетd->platformScreen->devicePixelRatio() * QHighDpiScaling::factor(this);
гдеdevicePixelRatio()
жестко запрограммирован как1.0
в Windows.QHighDpiScaling
— интересный класс с большим количеством документации. 28.05.2017