Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: alexman от Октябрь 18, 2011, 15:56



Название: Учет областей вне boundingRect у наследника QGraphicsItem.
Отправлено: alexman от Октябрь 18, 2011, 15:56
1. Есть наследник от QGraphicsItem - некоторый полигон (привожу пример одного элемента; на самом деле различных наследников туча).
2.
Код:
QRectF QGraphicsItem::boundingRect () const
{
     return m_polygon.boundingRect();
}
3. Рисовка включает рисовку фигуры + рисовку областей около узловых точек m_polygon (есть некоторый квадратик, кружочек, не важно). Важно что при изменении масштаба область размеров не меняет!
4. Проблема заключается в следующем: данные области могут выходить за пределы boundingRect и из-за этого возникает ряд проблем (то область обрезается, то не рисуется, появляются всякие артефакты,...).

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

ЗЫ ранее в качестве вьюпорта был установлен QGLWidget и проблемы не было. Теперь QWidget.


Название: Re: Учет областей вне boundingRect у наследника QGraphicsItem.
Отправлено: kamre от Октябрь 18, 2011, 19:00
ранее в качестве вьюпорта был установлен QGLWidget и проблемы не было. Теперь QWidget.
Значит раньше всегда все перерисовывалось, а теперь делается перерисовка с оптимизацией по bounding box. Можно включить опять полную перерисовку.


Название: Re: Учет областей вне boundingRect у наследника QGraphicsItem.
Отправлено: alexman от Октябрь 19, 2011, 08:16
Явно не вызывал всю перерисовку!

Код:
Можно включить опять полную перерисовку.
Как? update: думаю это не очень хорошая идея.


Название: Re: Учет областей вне boundingRect у наследника QGraphicsItem.
Отправлено: kamre от Октябрь 19, 2011, 10:07
Как?
http://doc.qt.nokia.com/latest/qgraphicsview.html#ViewportUpdateMode-enum


Название: Re: Учет областей вне boundingRect у наследника QGraphicsItem.
Отправлено: alexman от Октябрь 19, 2011, 11:02
В общем ясно. Ничего нового( спасибо!