我有两个对象:CQWater和CQTank。如果他的位置相同,我的CQTank将会消失。我该怎么做才能让坦克前进。
CQWater::CQWater( QGraphicsScene *scena )
{
// drew the rect
setPixmap(QPixmap(":/new/prefix1/images/woda.png"));
setTransformOriginPoint(50,50);
setRotation(180);
woda = new CWater();
setPos(woda->x, woda->y);
scena->addItem(this);
}
TANK:
CQTank::CQTank( QGraphicsScene *scena )
{
czolg = new CTank();
setPos(czolg->x, czolg->y);
scena->addItem(this);
}
QRectF CQTank::boundingRect() const
{
qreal adjust = 0.5;
return QRectF(-18 - adjust, -22 - adjust,
36 + adjust, 60 + adjust);
}
QPainterPath CQTank::shape() const
{
QPainterPath path;
path.addRect(-10, -20, 20, 40);
return path;
}
void CQTank::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
painter->setBrush(Qt::yellow);
painter->drawEllipse(-10, -10, 20, 20);
}
我不知道如何向前或向后移动物体。
答案 0 :(得分:1)
你必须使用Z值属性,docs说:
void QGraphicsItem :: setZValue(qreal z)
将项目的Z值设置为z。 Z值决定堆叠 兄弟(邻近)物品的顺序。高Z值的兄弟项目 将始终绘制在具有较低Z的另一个兄弟项目之上 值。
如果您恢复Z值,则项目的广告订单将决定其值 堆叠顺序。
Z值不会以任何方式影响项目的大小。
默认Z值为0.
相对于另一个更大,它将在上面显示,否则它将在下面。