Pyqt4 рисует QGraphicsPixmapItem на другом QGraphicsPixmapItem

Я начал использовать PyQt4 некоторое время назад, и теперь я пытаюсь создать небольшую анимацию, используя QGraphicsItemAnimation. Я никогда раньше не делал этого с PyQt4, я всегда использовал pygame. Должны быть разные слои, qpixmaps можно анимировать на этих слоях, но эти слои также можно рисовать на других слоях, а затем можно анимировать весь слой со всеми qpixmaps, отрисованными на нем. Я где-то видел, что с помощью QGraphicsItemAnimation я могу анимировать QGraphicsItems без необходимости перерисовывать их на слой, на котором они находятся, как в pygame. Это немного сложно объяснить. Надеюсь, вы понимаете, что я имею в виду. Добавлю несколько фото, чтобы было понятнее.

Например, если у меня есть эти две формы:

введите здесь описание изображения

Например, я могу переместить только qgraphicsitem прямоугольника:

введите здесь описание изображения

Но я также могу переместить весь слой, эллипс и прямоугольник нарисованы на одном слое, поэтому, если я перемещу весь слой после перемещения прямоугольника, это будет выглядеть так:

введите здесь описание изображения

Чтобы достичь этого, мне каким-то образом нужно создать эти «слои», и я думал сделать это, используя QGraphicsPixmapItems в качестве слоев, а затем рисовать на них другие QGraphicsPixmapItems либо в виде слоев, либо в виде отдельных изображений. Что-то вроде добавления QGraphicsItem в QGraphicsScene, но насколько я знаю, QGraphicsScenes нельзя анимировать с помощью QGraphicsItemAnimation. Я просмотрел документацию, но смог найти только QGraphicsPixmapItem.setPixmap, который заменяет старое растровое изображение, а не добавляет еще одно поверх него. Итак, как я могу добавить QGraphicsPixmapItem в другой QGraphicsPixmapItem? Я использую Python 2.7.3, если это имеет значение.


person user2746752    schedule 09.02.2014    source источник


Ответы (1)


Чтобы создать «слой», добавьте элементы в QGraphicsItemGroup.

Класс QGraphicsItemGroup наследует QGraphicsItem, поэтому его можно установить как элемент анимации, и все его дочерние элементы будут анимированы как единое целое. В то же время дочерние элементы можно анимировать отдельно.

person ekhumoro    schedule 09.02.2014