我正在为一架小型无人机开发一个地面控制站,我正在尝试添加一个从文件加载航点的功能。
每个航点都是QGraphicsItem
上的QGraphicsScene
。
但是,当文件中有超过100个点时,创建时间超过2秒......
有没有办法更快地做到这一点?
答案 0 :(得分:2)
40K Chips示例显示了具有大量元素的场景的填充。
http://doc.qt.io/qt-5/qtwidgets-graphicsview-chip-mainwindow-cpp.html
void MainWindow::populateScene()
{
scene = new QGraphicsScene;
QImage image(":/qt4logo.png");
// Populate scene
int xx = 0;
int nitems = 0;
for (int i = -11000; i < 11000; i += 110) {
++xx;
int yy = 0;
for (int j = -7000; j < 7000; j += 70) {
++yy;
qreal x = (i + 11000) / 22000.0;
qreal y = (j + 7000) / 14000.0;
QColor color(image.pixel(int(image.width() * x), int(image.height() * y)));
QGraphicsItem *item = new Chip(color, xx, yy);
item->setPos(QPointF(i, j));
scene->addItem(item);
++nitems;
}
}
}
如果你在这里有很多初始化代码,那么可能需要很长时间。如果加载速度很慢,您可能需要查看QGraphicsItem
的子类化。这里的自定义项目中的详细信息级别(请参阅chip.cpp)非常酷,它如何处理所有内容。
希望有所帮助。