QGraphicsView рисование огромной сетки - как оптимизировать? - PullRequest
3 голосов
/ 15 февраля 2012

Мне нужно нарисовать большую сетку для моего приложения (например, 100 строк, 1000 столбцов). Я использую QGraphicsView с установленным окном просмотра OpenGL (не сильно повышает производительность).

Приложение достаточно отзывчивое, но я хотел бы знать, правильно ли я все делаю.

В основном у меня есть GridItem, который наследует QGraphicsItem, и я попробовал две вещи:

1) Конструктор создает тысячи QGraphicsRectItem, передавая этот (GridItem) как родительский (QGraphicsItem *). Я правильно реализовал член boundingRect () (я верю).

2) Конструктор создает множество QGraphicsLineItem таким же образом.

В обоих случаях метод рисования GridItem ничего не делает, так как рисование дочерних элементов обрабатывается автоматически Qt.

Вариант 1) примерно в три раза быстрее, чем вариант 2). Мой вывод заключается в том, что большие линии, которые выходят за пределы области просмотра, не слишком оптимизированы и слишком много объектов перерисовываются без необходимости. Как вы думаете, это правильное объяснение?

Это заставило меня задуматься, правильно ли я справился с проблемой. Как бы вы нарисовали очень большую сетку?

Вверху этой сетки у меня есть еще один слой квадратов, которые можно нажимать, перетаскивать и т. Д.

Заранее спасибо!

С уважением,

djfm

...