我正在尝试为棋盘实现场景图。
我为每个棋盘正方形构建了一些Square QGraphicsItem对象,这些对象是QGraphicsScene的直接子级。我已经建立了一些Square的直接子元素。
我的场景图如下:
Board |- Square0 - Piece0
|- Square1 - Piece1
|- Square2
|- Square3 - Piece2
问题在于元素的堆叠顺序:当我拖动Piece1时,它将显示在Square2和Square3下。
我应该如何防止这种正方形的碎片重叠? 我试图更改Pieces zValue,但看来这不起作用。
我喜欢这种结构,它使我可以将片段放置在相对于其父对象固定的pos()处,并在它们移动时重新对其进行父化。
如果需要的话,这里是构建场景的代码。 ChessSquareItem和ChessPieceItem是QGraphicsItem的派生类。 我删除了不相关的代码以简化阅读。 这是使用PySide2(5.11.1a1.dev1530005708)用Python3.6编写的。
# 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)