Использование элементов в фоновом режиме QGraphicsScene - PullRequest
2 голосов
/ 24 января 2010

У меня есть QGraphicsScene, где я изначально рисовал фон в функции drawBackground (). Тем не менее, это потребовало довольно много вычислений и оказалось довольно медленным, поэтому я создал несколько элементов вместо этого. Это было ожидаемое ускорение.

Мой вопрос: есть ли способ рассматривать эти предметы в качестве фона? Будет ли вообще иметь значение, если я отнесусь к ним как к фоновым предметам?

Спасибо

1 Ответ

1 голос
/ 24 января 2010

Существует три слоя в терминах QGraphicsScene (см. Документацию Qt):

  • QGraphicsScene :: ItemLayer

Слой предмета. QGraphicsScene отображает все элементы находятся в этом слое, вызывая виртуальная функция drawItems (). слой элемента рисуется после фоновый слой, но до слой переднего плана.

  • QGraphicsScene :: BackgroundLayer

Фоновый слой. QGraphicsScene делает фон сцены в этом слой путем вызова виртуальной функции drawBackground (). Фоновый слой рисуется в первую очередь слоями.

  • QGraphicsScene :: ForegroundLayer

Слой переднего плана. QGraphicsScene делает передний план сцены в этом слой путем вызова виртуальной функции drawForeground (). Слой переднего плана рисуется последним из всех слоев.

Поэтому нет законного способа поместить элемент в фоновый слой. Однако вы можете использовать QGraphicsItem Sorting, чтобы поместить некоторые элементы позади других, чтобы они выглядели как background .

...