Писал казуальную игру для Android, столкнулся со следующей проблемой. Надписи, на телефонах с экраном 5" и меньше, выглядят больше задуманного, а на планшетах, выглядят меньше задуманного.
Есть 2 типа надписей QLable и те, которые отрисовываются при помощи QPainter методом drawText.
Базовый размер игрового экрана 960х600, и в зависимости от запускаемого устройства он растягивается или сжимается.
Обратился к документации по классу QFont.
По методу setPixelSize написано следующее (сразу перевод):
В действительности, по крайней мере для Android устройств, это не правда.
А правда заключается в точности на оборот: setPointSize — зависит от устройства, setPixelSize — не зависит от устройства.
Может я не правильно понимаю смысл выражения — зависит/не зависит от устройства, но использоваине setPixelSize решило мою проблему.
Пишите, как справлялись с подобной проблемой на других ОС.
Есть 2 типа надписей QLable и те, которые отрисовываются при помощи QPainter методом drawText.
Базовый размер игрового экрана 960х600, и в зависимости от запускаемого устройства он растягивается или сжимается.
Обратился к документации по классу QFont.
По методу setPixelSize написано следующее (сразу перевод):
Использование этой функции делает шрифт зависимым от устройства. Используйте setPointSize() или setPointSizeF(), что бы установить размер шрифта не зависимым от устройства.
В действительности, по крайней мере для Android устройств, это не правда.
А правда заключается в точности на оборот: setPointSize — зависит от устройства, setPixelSize — не зависит от устройства.
Может я не правильно понимаю смысл выражения — зависит/не зависит от устройства, но использоваине setPixelSize решило мою проблему.
Пишите, как справлялись с подобной проблемой на других ОС.
Комментарии (5)
BlackRaven86
29.04.2016 18:55Изначально поддержка экранов с высоким разрешением так и задумывалась: шрифт в поинтах и он автоматически масштабируется Qt и/или ОС (при этом, размеры виджетов масштабируешь сам). А шрифт в пикселях — это были абсолютные значения. По опыту скажу, что размеры в поинтах действительно могут как-то странно отображаться.
Сейчас концепция поменялась :) Все размеры в пикселях и при использовании AA_EnableHighDpiScaling Qt умножает их на необходимый коэффициент. Единственное, не все части Qt это поддерживают, но виджеты и большинство компонентов QtQuick должны работать.
Zifix
Мне кажется, или кто-то перепутал Хабр с Тостером? Почему вы используете QtWidgets в мобильном приложении?
Mihasik1984
1) Использование QtWidgets в мобильном приложении запрещено?
2) С чего Вы взяли, что я использую QtWidgets, по QLable?
3) Я использую QGraphics.
Zifix
1) Нет, просто не оправдано, Google вот, например, игру на QML написал.
2) Да, по QLabel
3) Не уверен, что разработчики тестируют его под Android, в QML свойство pointSize работает адекватно.
Но с такими вопросами в любом случае на форум разработчиков, сервис вопросов и ответов, в багтрекер в крайнем случае, но точно не на Хабр.
BlackRaven86
Виджеты должны работать под Android, но предполагаю, что с ними будет сложнее. Впрочем, возможно вы потом напишете статью на тему использования виджетов под Android, будет интересно :)