我试图在Qt的QGraphicsScene中绘制一个10毫秒的网格。我对Qt不太熟悉......这是我第一次使用它,只是因为应用程序需要在Windows和Linux之间移植。
我实际上绘制网格时没有问题,这只是网格变大时的性能。如果/当新数据加载到要显示的程序中时,网格必须能够改变大小以适合SceneRect。
这就是我现在这样做的方式,我讨厌这个,但这是我能想到的唯一方法......
void Plotter::drawGrid() {
unsigned int i;
QGraphicsLineItem *line;
QGraphicsTextItem *text;
char num[11];
QString label;
unsigned int width = scene->sceneRect().width();
unsigned int height = scene->sceneRect().height();
removeGrid();
for (i = 150; i < width; i+= 10) {
line = new QGraphicsLineItem(i, 0, i, scene->sceneRect().height(), 0, scene);
line->setPen(QPen(QColor(0xdd,0xdd,0xdd)));
line->setZValue(0);
_itoa_s(i - 150, num, 10);
label = num;
label += " ms";
text = new QGraphicsTextItem(label, 0, scene);
text->setDefaultTextColor(Qt::white);
text->setX(i);
text->setY(height - 10);
text->setZValue(2);
text->setScale(0.2);
//pointers to items stored in list for removal later.
gridList.append(line);
gridList.append(text);
}
for (i = 0; i < height; i+= 10) {
line = new QGraphicsLineItem(150, i, width, i, 0, scene);
line->setPen(QPen(QColor(0xdd,0xdd,0xdd)));
line->setZValue(0);
gridList.append(line);
}
}
当scene-&gt; sceneRect()。width()变得太大时,应用程序变得非常迟缓。我尝试过使用QGLWidget,但速度的提升最多只是微不足道。
答案 0 :(得分:1)
我最终使用了一个10x10的方形像素图,并将其绘制为我的QGraphicsView上的backgroundBrush,正如我在初始问题下的评论中的链接所示。