如何高效创建大量的QGraphicsItem?

How to efficiently create a large amount of QGraphicsItem?

我正在为小型无人机开发地面控制站,我试图在其中添加一个函数以从文件加载 waypoints。 每个航路点都是 QGraphicsScene 上的一个 QGraphicsItem

但是,当文件中有超过100个点时,创建时间超过2秒...

有什么方法可以更快地做到这一点?

40K 芯片示例展示了具有大量元素的场景的总体。

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)处理所有内容的方式非常酷。

希望对您有所帮助。