Qt4 QGraphicsView绘制巨大网格-如何优化?

Qt4 QGraphicsView绘制巨大网格-如何优化?,qt4,qgraphicsview,Qt4,Qgraphicsview,我需要为我的应用程序画一个大网格(比如100行,1000列)。我使用的是带有opengl视口集的QGraphicsView(性能没有多大提高) 该应用程序的响应速度相当快,但我想知道我是否做得对 基本上,我有一个GridItem继承了QGraphicsItem,我尝试了两件事: 1) 构造函数创建数千个QGraphicsRectItem,并将此(GridItem)作为(QGraphicsSitem*)父项传递。我已经正确地实现了boundingRect()成员(我相信) 2) 构造函数以相同的方

我需要为我的应用程序画一个大网格(比如100行,1000列)。我使用的是带有opengl视口集的QGraphicsView(性能没有多大提高)

该应用程序的响应速度相当快,但我想知道我是否做得对

基本上,我有一个GridItem继承了QGraphicsItem,我尝试了两件事:

1) 构造函数创建数千个QGraphicsRectItem,并将此(GridItem)作为(QGraphicsSitem*)父项传递。我已经正确地实现了boundingRect()成员(我相信)

2) 构造函数以相同的方式创建许多QGraphicsLineItem

在这两种情况下,GridItem的绘制方法都不起任何作用,因为子元素的绘制是由Qt自动处理的

选项1)的速度大约是选项2)的三倍。我的结论是,延伸到视口之外的大线条没有得到太多优化,并且过多的对象被不必要地重新绘制。你认为这是正确的解释吗

这使我怀疑我是否正确地处理了这个问题。你将如何绘制一个非常大的网格

在网格的顶部,我有另一层正方形,可以点击,拖动,等等

提前谢谢

问候,


djfm

我做了一些进一步的研究:如果我直接将项目添加到场景中,而不是添加到GridItem中,速度是正确的。在这种情况下这不是问题,但如果我想将GridItem嵌入到更复杂的场景中,将GridItem作为GraphicsItem可能会很有用。。。