Название: [решено] QGraphicsView::drawBackground() Отправлено: klou от Декабрь 22, 2010, 14:05 Есть пользовательски класс, унаследованный от QGraphicsView.
В конструкторе есть строка: Код: setCacheMode(QGraphicsView::CacheNone); Код: void QMyGraphicsView::mouseMoveEvent( QMouseEvent *event ) Однако при движени мыши с зажатой кнопкой фон не перерисовывается. У кого какие мнения по этому поводу? Спасибо. Название: Re: QGraphicsView::drawBackground() Отправлено: GreatSnake от Декабрь 22, 2010, 16:00 В Qt по умолчанию вся отрисовка делается асинхронно, т.е. drawBackground() будет вызван только когда QGraphicsView получит QPaintEvent.
Поэтому аккумулируйте движения мыши и отрисовывайте их в drawBackground(). PS. логичнее использовать drawForeground(), хотя это зависит от задачи. Название: Re: QGraphicsView::drawBackground() Отправлено: klou от Декабрь 23, 2010, 07:56 Задача следующая:
Необходимо активно(часто) перерисовывать изменяющийся фон (который рисуется с использованием OpenGL) при условии, что сверху фона отображаются различные QGraphicsItem. Как один из вариантов была идея обернуть QGraphicsItem, переопределить событие Paint (отрисовка фона), при создании назначить "Z-координату" (setZValue() ) таким образом, чтобы Item оказался ниже всех других. Однако в проекте используются дисплейные списки и так получается, что они создаются в другом контектсте воспроизведения. Т.о. код вида Код: glBegin(GL_TRIANGLES); Код: glCallLists(...); Название: Re: QGraphicsView::drawBackground() Отправлено: klou от Декабрь 23, 2010, 09:43 Нашёл :D
Код: viewport()->update(); |