void paint( QPainter* painter, const QStyleOptionGraphicsItem*, QWidget* = 0 ){ const QRectF& rect = painter->worldTransform().inverted().mapRect( QRectF( painter->viewport() ) ); if ( changed( rect ) ) { //Если текущая область изменилась, то перерисовываем кеш _cache - внутреннее поле класс, QPixmap _cache. _cache = QPixmap( painter->viewport().size() ); _cache.fill( QColor( 0, 0, 0, 0 ) ); //Рисовка в кеш. } //Отображение кеша: painter->setWorldMatrixEnabled( false ); painter->drawPixmap( 0, 0, _cache ); painter->setWorldMatrixEnabled( true );}
QRect QPainter::viewport () constReturns the viewport rectangle.
Тогда зачем он вообще нужен? Ведь всё можно отрисовать в QGraphicsView::drawBackground().