Порядок графа сцены Qt - PullRequest
0 голосов
/ 05 июля 2018

Я пытаюсь реализовать граф сцены для шахматной доски.

Я построил несколько объектов 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)
...