Q: Qt 5.2 и Retina

Feb 11, 2014 11:01


Кросспост из блога автора. Комментировать лучше там, но можно и тут

Граждане разработчики,
Особенно использующие Qt, вы же тут читаете, я знаю.
Вот есть Qt 5.2 и Маки с ретиной. Надо, значит, чтобы было Щастье.
На самом деле, 99% Щастья есть сходу: если в Info.plist написан NSPrincipalClass, то все стандартные элементы (шрифты, к примеру) рендерятся в ретину и все работает.
Но.
У меня используется свой OpenGL-код, который зовется из QGraphicsScene::drawBackground(). Он, понятно, сходу рисует в четверти окошка в таком случае.
Эксперименты показали, что достаточно поменять одну строчку. Вместо:


  1. glViewport(x,y,w,h);
написать


  1. int dpr = painter->device()->devicePixelRatio();

  2. glViewport(x*dpr,y*dpr,w*dpr,h*dpr);
И все начинает (вроде бы?) работать как надо. Зумится, ротейтится, сдвигается - все вроде как надо.
Так вот, вопрос: Что Я Делаю Не Так?. Не упускаю ли я что-то важное?
P.S. Рассматривание кода Qt-шных примеров не дало ответа. А именно: в части примеров делают именно так. И все работает. А вот в qtbase\examples\widgets\graphicsview\boxes - вообще нет никакого следа devicePixelRatio(), все каким-то чудом работает "само" (и ретина поддерживается нормально)

Программирование, qt

Previous post Next post
Up