2013-05-02 2 views
0

이것은 체스 판을 생성하는 간단한 코드입니다. 첫 번째 그림에 대한 장소처럼 행동 rects 추가됩니다. 다음으로, 그림의 png를 포함하는 QPixmap이 표시됩니다. 나는 그 직사각형 아래에 있기 때문에 몇 가지 수치를 볼 수 없습니다. 만약 내가 어디에 rect (scene-> addRect ...) 추가 할 주석 줄 넣은 잘 보인다. 왜? 항목을 표시해야하는 순서로 그리기입니다.QT - QGraphicsScene이 제대로 표시되지 않습니다 (z- 버퍼?)

for (int column = 0; column < 8; column++) { 

      if ((row + column) % 2) { 
       scene->addRect(row * 50, column * 50, 50, 50, greyPen, greyBrush); 
      } 
      else { 
       scene->addRect(row * 50, column * 50, 50, 50, whitePen, whiteBrush); 
      } 
      int figure = chessboard->getFigureOnPos(row, column); 

      if (figure == Dama::Chessboard::DAMA_BLACK) { 
        QGraphicsItem * item = scene->addPixmap(dama_black); 
        item->setPos(column * 50, row * 50); 
      } 
      else if (figure == Dama::Chessboard::DAMA_WHITE) { 
       QGraphicsItem * item = scene->addPixmap(dama_white); 
       item->setPos(column * 50, row * 50); 
      } 
      else if (figure == Dama::Chessboard::PANAK_BLACK) { 
       QGraphicsItem * item = scene->addPixmap(panak_black); 
       item->setPos(column * 50, row * 50); 
      } 
      else if (figure == Dama::Chessboard::PANAK_WHITE) { 
       QGraphicsItem * item = scene->addPixmap(QPixmap(panak_white)); 
       item->setPos(column * 50, row * 50); 
      } 
     } 

답변

1

QGraphicsItem에는 더 높은 가치의 항목이 위에 그려지는 항목의 스택 순서를 설정하는 setZValue라는 함수가 있습니다. 기본적으로 모든 항목은 0으로 설정됩니다. 항목이 장면의 올바른 위치에 있으면 그림의 z 값을 rect보다 높은 값으로 설정하십시오.

관련 문제