这是我生成棋盘的简单代码。首先添加的行为就像人物的地方一样。接下来,显示包含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);
}
}
答案 0 :(得分:1)
QGraphicsItem有一个名为setZValue的函数来设置项目的堆叠顺序,其中较高价值的项目将在顶部绘制。默认情况下,所有项目都将设置为零。如果项目位于场景中的正确位置,请将数字的z值设置为高于rects的值。