Вопрос в следующем ... QGraphicsView -> QGraphicsScene ... вывод идет на сцену. Всё нормально работает. Надо рисовать прямоугольную область выделения - ну для зуминга - "увеличить-уменьшить" либо просто зону, для выделения объектов. Пишу обработчик для
void KViewMap::mousePressEvent(QMouseEvent *mouseEvent);
void KViewMap::mouseMoveEvent(QMouseEvent *mouseEvent);
void KViewMap::mouseReleaseEvent(QMouseEvent *mouseEvent);
динамический прямоугольник рисую на сцене - на перемещении мышки изменяются параметры прямоугольника типа
polygonItem->setPolygon(polyNew); - всё просто, всё работает. Работает замечательно если 5, 10, 300 объектов на сцене. Если 30000 объектов, область выделения отрисовывается уже с затыками - тормозит, не успевает за мышкой. У меня будет порядка 150000 объектов. Как ускорить ?
Решил рисовать не на сцене а непосредственно на view. На тех же самых обработчиках мышки.
Ну там упростим старый, новый прямоугольник - затирание старого - рисование нового.
Код на перемещении мыши :
QPainter *paint=new QPainter(this); // здесь объявление было в классе - инициализация по нажатию мыши
paint->setPen(QPen(Qt::black, 2));
paint->drawRect(LastRect);
или
QPainter paint;
paint.begin(this);
paint.setPen(QPen(Qt::black, 2));
paint.drawRect(LastRect);
paint.end();
или
QPainter paint;
paint.begin(viewport());
paint.setPen(QPen(Qt::black, 2));
paint.drawRect(LastRect);
paint.end();
Всё это выдает сообщение "Painter not active". Подскажите пожалуйста что не так ?
Очень интересует как ускорить отрисовку на сцене и почему не рисует на виде ?