Я пытаюсь использовать графическую структуру Qt для рисования графика с большим количеством узлов (2000+). Используя QGraphicsView
и QGraphicsScene
, я легко рисую большое количество эллипсов с помощью метода addEllipse()
, но изменение цвета элементов с помощью setBrush()
происходит слишком медленно. Я также попытался использовать QGraphicsPixmapItem
, а затем просто переключить pixmap, чтобы изменить цвет, но это также не работает. Можете ли вы дать мне совет, как это сделать? Является ли использование OpenGL единственным способом повысить производительность?Много QGraphicsItem
Большое спасибо.
Редактировать: У меня нет примера кисти. Поставит его позже. код просто поменять кисти эллипса больше ничего,
Edit: Pixmap пример (код в Python с PyQt):
def startTest(self):
self.n = 1000
self.c = 1
self.scene = QtGui.QGraphicsScene()
self.scene.setSceneRect(0,0,500,500)
self.graphicsView.setScene(self.scene)
self.redPix = QtGui.QPixmap(5, 5)
self.redPix.fill(QtGui.QColor(255,0,0))
self.blackPix = QtGui.QPixmap(5, 5)
self.blackPix.fill(QtGui.QColor(0,0,0))
for i in range(0,self.n):
temp = QtGui.QGraphicsPixmapItem(self.redPix)
temp.setPos(random.uniform(10, 490),random.uniform(10, 490))
self.scene.addItem(temp)
def updateNodes(self):
if self.c:
for i in self.scene.items():
i.setPixmap(self.blackPix)
self.c = 0
else:
for i in self.scene.items():
i.setPixmap(self.redPix)
self.c = 1
Вы можете разместить код? – UmNyobe