QT - QGraphicsScene没有正确显示(z-buffer?)

时间:2013-05-02 17:37:39

标签: c++ qt

这是我生成棋盘的简单代码。首先添加的行为就像人物的地方一样。接下来,显示包含png图形的QPixmap。我没有看到一些数字,因为它们属于那个范畴。如果我在注释行中添加rect(scene-> addRect ...),它看起来很好。为什么?我正在按顺序绘画,应该展示哪些物品。

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 个答案:

答案 0 :(得分:1)

QGraphicsItem有一个名为setZValue的函数来设置项目的堆叠顺序,其中较高价值的项目将在顶部绘制。默认情况下,所有项目都将设置为零。如果项目位于场景中的正确位置,请将数字的z值设置为高于rects的值。