Название: QPainter::fillRect Отправлено: cresta от Июль 10, 2007, 11:53 Здравствуйте. Пробую нарисовать на окне периодически обновляющийся текст. Текст рисуется, но предыдущий текст почему-то не затирается, и получается, что текст накладывается поверх предыдущего.
Почему? разве fillRect не должен затереть рект перед выводом текста? Код: s.sprintf("%02d:%02d:%02d / %02d:%02d:%02d", hours, min, sec, hoursD, minD, secD ); Название: QPainter::fillRect Отправлено: SABROG от Июль 10, 2007, 12:02 А если это добавить ?
Код:
Название: QPainter::fillRect Отправлено: cresta от Июль 10, 2007, 12:40 это не то.
Причина в том, что fillRect принимает точку x,y как левый верхний угол ректа, а drawText принимает эту точку как левый нижний угол, и рисует за пределами ректа, залитого fillRect'ом. Пришлось делать через задницу: fillRect(x, y, w, -h, ...) И хотя бы одно слово написали про этот прикол в хелпе :( Название: QPainter::fillRect Отправлено: SABROG от Июль 10, 2007, 13:49 Может быть дело в этом ?
Цитировать Draws the given text at position (x, y), using the painter's currently defined text direction. И надо играться с флагами: Цитировать Qt::AlignLeft Qt::AlignRight Qt::AlignHCenter Qt::AlignTop Qt::AlignBottom Qt::AlignVCenter Qt::AlignCenter Qt::TextSingleLine Qt::TextExpandTabs Qt::TextShowMnemonic Qt::TextWordWrap Название: QPainter::fillRect Отправлено: cresta от Июль 10, 2007, 16:00 Нет, дело именно в том, что ректы для fillRect и drawText не совпадают.
А text direction задает направление лево-право. Перечисленные флаги влияют на положение текста внутри ректа, а не на положение ректа относительно точки x,y. Название: QPainter::fillRect Отправлено: Sergeich от Июль 10, 2007, 16:44 А почему бы не юзать версию QPainter::drawText ( const QRectF & rectangle, int flags, const QString & text, QRectF * boundingRect = 0 ) ?
Название: QPainter::fillRect Отправлено: WW от Июль 11, 2007, 11:17 Цитата: "cresta" Нет, дело именно в том, что ректы для fillRect и drawText не совпадают. А text direction задает направление лево-право. Перечисленные флаги влияют на положение текста внутри ректа, а не на положение ректа относительно точки x,y. Читаем Бланшета и пишем: Код: QMatrix matrix; Вообщем, читаем Бланшета. Название: QPainter::fillRect Отправлено: cresta от Июль 11, 2007, 13:34 Цитата: "WW" Читаем Бланшета и пишем: Код: QMatrix matrix; Вообщем, читаем Бланшета. Не Бланшета, а Бланшет. Ибо не склоняется. Неужели Код: QMatrix matrix; проще чем: Код: -h ????? Или может работать быстрее будет? Или размер кода меньше? Или читабельность выше? Гипертрофированная оопизация выглядит чудовищно :) Название: QPainter::fillRect Отправлено: Racheengel от Июль 11, 2007, 16:14 Бланшет - это он, а не она, поэтому можно и склонять...
А через матрицы имхо зло... |