LINUX.ORG.RU

HiDPI экран и приложения на Qt

 ,


0

4

Обновился тут Qt до 5.6, и все приложения поломались, не понимают HiDPI экрана, раньше QT_DEVICE_PIXEL_RATIO=2 позволяло приложениям быть нормально отмаштабированными, теперь viber игнорирует любые настройки Qt и всегда мелкий, keepassx (из git) либо мелкий либо при QT_AUTO_SCREEN_SCALE_FACTOR=1 очень крупный. все приложения на GTK3 выглядят отлично, ничего никуда не прописывал.

как я понимаю эксперементальная поддержка HiDPI в 5.6 свёрнута, и Linux не поддерживается в качестве хоста с HiDPI, только OS X и Microsoft Windows.

Есть идеи как побороть эти новшества в linux?


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

Тут смотрел? http://doc.qt.io/qt-5/highdpi.html

Смотрел, ничего из их доки не помогло вернуть работоспособность Qtшных прог. Даже блог весь прошерстил http://blog.qt.io/blog/2016/01/26/high-dpi-support-in-qt-5-6/, не понятно как вернуть к поведению которое было в 5.4(5). придётся лупу доставать....

ksim
() автор топика

В кде 5 была настройка масштабирования экрана. У меня он стоял в 2 — всё было красиво. Виджеты были в два раза крупнее все, все значки были тоже в два раза крупнее и подходили к виджетам. При этом значки в кде были чёткие — он явно подгружал иконки с большим количеством точке.

После обновления на Qt 5.6 на моём рабочем столе наступил локальный армагеддон. Значки остались в 2 раза больше, а вот виджеты стали в 4 раза больше — в 2 через масштабирование и ещё в 2 автоматически. Понижение масштабирования до 1 делает значки маленькими (виджеты — 2x, значки — 1x). Установка в 2 делает виджеты огромными (виджеты — 4x, значки — 2x).

Пока что решил установкой масштабирования в 1 и выбором где можно больших размеров значков. Но местами даже эти большие размеры слишком мелкие, а в не-кдешных программах (например, в QtCreator) размер значков не выбирается вообще — и там всё мелко.

ChALkeR ★★★★★
()
Последнее исправление: ChALkeR (всего исправлений: 1)
Ответ на: комментарий от CrossFire

А какая необходимость в 5.6 на десктопе?

5.6 в репах, необходимость в запуске приложений написанных с использование Qt

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

В этом и засада QT_SCALE_FACTOR=2 увеличивает в 2 раза от того что должно быть, как результат всё увеличивается в 4 раза, QT_AUTO_SCREEN_SCALE_FACTOR=1 текст нормальный вроде, а контролы увеличены в 4 раза (то есть в 2 раза больше нормального). Viber скорее всего сломался так как автор поправил на использование embed Qt (так как 5.6 крешится), который не ведает о HiDPI. Вообщем отличный релиз, как я понимаю Qtшные аппы должны перепиливаться под каждое минорное изменение фреймворка.

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

так как 5.6 крешится

Он там QML+JS не использует? В 5.6 опять сломали unshift в массивах, теперь он повреждает память.

ChALkeR ★★★★★
()
Последнее исправление: ChALkeR (всего исправлений: 2)
Ответ на: комментарий от ksim

наврал не в 4, а в 3, QT считает что мне нужно 3x :( QT_SCREEN_SCALE_FACTOR=0.65 возвращает к 2x, c чем уже можно жить.

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

Знаешь, а я разобрался.

QT_AUTO_SCREEN_SCALE_FACTOR=1 явно ставит в три.

QT_SCALE_FACTOR=2 творит какую-то ерунду, и все шрифты становятся сильно больше иконок.

А вот просто QT_SCREEN_SCALE_FACTORS=2 помог.

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

Вот оно, точно, спасибо, тоже заработало нормально.

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

так я и не с растояния 3 метра за ноутбуком сижу, нормальный для ноутбука 144 dpi , это 15" fullHD, у меня 275, что вполне себе 2x, никак не 3x.

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

96 — это стандартный dpi

стандартный для чего? звучит как «15см — это стандартный член». мы сейчас о физическом dpi говорим. у меня у 4k телефизора dpi — 88, но если рендерить без увеличения на нём, то всё очень-очень мелко с расстояния 4 метра и не прочитать. так что масштабирование только ослы к физическому dpi приколачивают.

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

dpi может быть какой угодно. Ну или это стандартный dpi для мониторов эдак 2000 года выпуска.

ppi — 96 стандартный ppi для устройств, которые держат на расстоянии вытянутой руки. Я свой ноутбук держу на расстоянии 40-45см, что даёт стандартный ppi не менее чем 151.

dpi (условно) у меня 282.42, делим его на ppi 151, получаем 1.87 точек на пиксель, округляется вверх до 2.

А Qt автоматом 3 ставит, что даже близко не лежало. Чтобы получить там 3, надо ноут на расстоянии больше вытянутой руки держать. Так кто-то делает вообще?

ChALkeR ★★★★★
()
Последнее исправление: ChALkeR (всего исправлений: 2)
Ответ на: комментарий от actionless

У меня на мониторе dpi что-то около 170 с копейками, а на телефоне вообще 440.

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

dpi и ppi синонимы. Нет у них разницы в программном и железном (не должно быть, если всё нормально настроено).

peregrine ★★★★★
()

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

так исторически сложилось

actionless ★★★★★
()
Последнее исправление: actionless (всего исправлений: 1)
Ответ на: комментарий от peregrine

Ок. Предложите мне тогда другие термины для отличия между собой плотности (обычно реальных, но не всегда) точек на экране и количества пикселей с точки зрения единиц измерения размера?

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

Ты про что вообще? Ты отличаешь между собой плотность точек на экране и плотность пикселей как единиц измерения размера? Это разные вещи.

Про какое из них ты говоришь сейчас?

ChALkeR ★★★★★
()
Последнее исправление: ChALkeR (всего исправлений: 1)
Ответ на: комментарий от ChALkeR

извини, но у меня нет желания тратить время на разжевывание того, что я уже объяснил и больше подробностей несложно нагуглить

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

Лол. Кину в тебя стандартом, что ли. Держи: https://www.w3.org/TR/css3-values/#absolute-lengths

The reference pixel is the visual angle of one pixel on a device with a pixel density of 96dpi and a distance from the reader of an arm’s length. For a nominal arm’s length of 28 inches, the visual angle is therefore about 0.0213 degrees. For reading at arm’s length, 1px thus corresponds to about 0.26 mm (1/96 inch).

Обрати внимание на две вещи: во-первых, речь идёт про виртуальные пиксели, а не про количество аппаратных пикселей на экране. Во-вторых, 96 виртуальных пикселей на дюйм справедливо только для мониторов. А речь про ноуты.

Короче, ты спорол какую-то невнятную херню =).

ChALkeR ★★★★★
()
Последнее исправление: ChALkeR (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.