QGraphicsScene, Координаты элементов влияют на производительность?

С помощью приведенного ниже фрагмента кода я создаю сцену из 100 000 прямоугольников.
Спектакль в порядке; представление отвечает без задержек.

QGraphicsScene * scene = new QGraphicsScene;
for (int y = -50000; y < 50000; y++) {
   scene->addRect(0, y * 25, 40, 20);
}
...
view->setScene(scene);

И теперь второй фрагмент - отстой

for (int y = 0; y < 100000; y++) {
   scene->addRect(0, y * 25, 40, 20);
}

Для первой половины элементов сцены представление задерживает реакцию на события мыши и нажатия клавиш, а для другой половины, похоже, все в порядке?!?

В предыдущей сцене есть sceneRect (x, y, w, h) = (0, -1250000, 40, 2499995).
В последней сцене есть sceneRect (x, y, w, h) = (0, 0, 40, 2499995).

Я не знаю, почему sceneRect влияет на производительность, поскольку индекс BSP основан на относительных координатах элемента .

Я что-то упускаю? В документации не нашел никакой информации, плюс демонстрация Qt 40000 Chips также распределяет элементы вокруг (0, 0) без объяснения причины этого выбора.

 // 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;
         ...

13
задан Nick Dandoulakis 28 May 2011 в 21:48
поделиться