Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: Igors от Март 12, 2014, 16:31



Название: Проблема с drawText
Отправлено: Igors от Март 12, 2014, 16:31
Добрый день

См аттач - результаты в 2 окнах не совпадают хотя рисуются одной и той же моей ф-цией которая вызывает QPainter::drawText(x, y, QString). Ну думаю, может насвистел где-то в вычислении "y" и сразу же после drawText нарисовал для отладки красную линию с тем же "y". Линии совпали, хмм.... как же так? Что может влиять на вывод текста?

Спасибо


Название: Re: Проблема с drawText
Отправлено: panAlexey от Март 12, 2014, 16:47
О, любимая "drawText". Что-б ее.
Я встречался с тем, что на разных версиях Qt по разному рисует.
У тебя похоже во первых офсет по y смещен, а во вторых белую линию рисуешь внизу красной.


Название: Re: Проблема с drawText
Отправлено: Bepec от Март 12, 2014, 16:49
Шрифт обычно, размер шрифта и прочее. Всё это рисуется по разному, маргины скачут как бешеные. Головоболь в общем.


Название: Re: Проблема с drawText
Отправлено: Igors от Март 13, 2014, 11:01
У тебя похоже во первых офсет по y смещен, а во вторых белую линию рисуешь внизу красной.
Если смещен, то чего красная линия "где доктор прописал"? Белой линии я не рисую, там просто текст кончился.

Разумеется попробовал setFont, QPainter::restore перед рисованием - эффект тот же. Где же порылась собака?


Название: Re: Проблема с drawText
Отправлено: GreatSnake от Март 13, 2014, 12:09
А фонты точно одинаковые? И QFont::StyleStrategy?
Видно же что рендерятся по-разному.


Название: Re: Проблема с drawText
Отправлено: Igors от Март 13, 2014, 12:45
Нашел разницу: первый рендерится на экран (грубо говоря), второй сначала в QImage. В аттаче тестовый пример + имедж. Хз что делать (убрать буфер нереально)  :'( :'(


Название: Re: Проблема с drawText
Отправлено: panAlexey от Март 13, 2014, 12:58
хм. У меня такая же задача стоит в рамках этого проекта (https://code.google.com/p/unnstudioreport/).
Может найдешь разгадку. Я не добрался как выравнивать нормально имадж.


Название: Re: Проблема с drawText
Отправлено: GreatSnake от Март 13, 2014, 13:05
Походу для рендеринга используются разные QPaintEngine.
В QImage raster. Какой тогда для экрана?


Название: Re: Проблема с drawText
Отправлено: Igors от Март 13, 2014, 13:37
Походу для рендеринга используются разные QPaintEngine.
В QImage raster. Какой тогда для экрана?
OSX Quartz (QPaintEngine::CoreGraphics), он векторный.

Итого залатал так:
Код
C++ (Qt)
int dx = 0, dy = 0;
#ifdef Q_WS_MAC
if (painter.paintEngine()->type() != QPaintEngine::CoreGraphics) {
dx = -1;
#ifndef QT_MAC_USE_COCOA
dy = -2;
#endif
}
#endif