Qt场景图顺序

时间:2018-07-05 10:28:14

标签: qt qgraphicsscene pyside2

我正在尝试为棋盘实现场景图。

我为每个棋盘正方形构建了一些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)

0 个答案:

没有答案