LINUX.ORG.RU

Масштабируемость GUI в Qt

 , , , ,


0

3

Всем привет. У меня есть программа, в которой некоторые величины для элементов указаны в px (собственно, сам Qt заставляет указывать их только в px помимо шрифтов и qss). Из-за этого на разных дисплеях с разной плотносью пикселей программа внешне выглядит не так, как задумывалось. Я решил использовать вместо px dp с использованием QScreen::physicalDotsPerInch(), но шрифты у меня попрежнему в pt.

Проблема в том, что почему то размер одного pt разный на одном и том же дисплее с разной плотностью пикселей, что уже противоречит тому, что pt - 1/72 дюйма. Разве что размер pt в px высчитывается относительно максимальной плотности, но мои dp высчитываются относительно настоящей плотности. Получается так, что если я запускаю программу на низком dpi, шрифты в pt выглядят больше чем задумывалось относительно виджетов с фиксированным размером в dp.

Как это можно исправить и какие вы используете подходы для идентичности gui на дисплеях с разным dpi? Может, кто-нибудь подскажет, как можно высчитать, сколько pt занимает пикселей программным путем?



Последнее исправление: Rot1 (всего исправлений: 3)

Ответ на: комментарий от CrossFire

QML пока не вариант, да и там вроде тоже есть похожие проблемы. Можно задать размер элемента в поинтах?

Rot1
() автор топика
Ответ на: комментарий от CrossFire

А где там про qml написано? Вы предлагаете использовать Qt::AA_EnableHighDpiScaling? Это разве будет работать в случае QWidget::setFixedSize()?

Rot1
() автор топика
Ответ на: комментарий от Rot1

С виджетами есть косяки даже при масштабировании в два раза на Retina, не говоря о более сложных случаях.

Я правда не тыкал виджеты после 5.6, но думаю ничего не изменилось, потому что все силы Digia сейчас брошены на развитие QML.

CrossFire ★★★★★
()
Ответ на: комментарий от chapay

Привести dp к px я могу, но я описал проблему выше со шрифтами

Rot1
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.