Я пытаюсь реализовать граф сцены для шахматной доски.
Я построил несколько объектов Square QGraphicsItem для каждого квадрата шахматной доски, которые являются прямым потомком QGraphicsScene. И я построил Кусок, который является прямым потомком этих Квадрат.
График моей сцены выглядит так:
Board |- Square0 - Piece0
|- Square1 - Piece1
|- Square2
|- Square3 - Piece2
Проблема с этим заключается в порядке расположения элементов: когда я перетаскиваю Piece1, он будет отображаться в Square2 и Square3.
Как мне сделать, чтобы предотвратить это квадратное наложение фигур?
Я пытался изменить Pieces zValue, но, похоже, это не работает.
Мне нравится эта структура, она позволяет мне размещать фигуры в фиксированной позиции () относительно их родителя и просто переопределять их при перемещении.
Вот код, который строит сцену, если это помогает.
ChessSquareItem и ChessPieceItem являются производными классами QGraphicsItem.
Я удалил ненужный код, чтобы облегчить чтение.
Это написано на Python3.6 с использованием PySide2 (5.11.1a1.dev1530005708).
# draw the board and pieces
for square in range(64):
square_item = ChessSquareItem(square, self.SQUARE_WIDTH)
piece = self.board.piece_map()[square]
# ChessPieceItem is created with square_item as parent
ChessPieceItem(piece, square_item)
# then the square_item is added to the QGraphicsScene
self.addItem(square_item)