2013-05-02 99 views
0

这是我生成棋盘的简单代码。首先是增加了像人物地方一样的rects。接下来,显示包含图的png的QPixmap。我没有看到一些数字,因为它们是在这种情况下。如果我在注释行中添加rect(场景 - > addRect ...),它看起来很好。为什么?我正在绘画,以显示至极的项目。QT-QGraphicsScene不能正确显示(z-buffer?)

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的函数来设置项目的堆叠顺序,其中较高价值的项目将被绘制在最上面。默认情况下,所有项目将被设置为零。如果项目在场景中的位置正确,请将数字的z值设置为比rects更高的值。