c++ - Qt Graphics,向前或向后移动对象
问题描述
我有两个对象: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);
}
坦克:
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);
}
我不知道如何向前或向后移动物体。
解决方案
正如文档所说,您必须使用 Z-value 属性:
无效 QGraphicsItem::setZValue(qreal z)
将项目的 Z 值设置为 z。Z 值决定同级(相邻)项目的堆叠顺序。一个 Z 值高的同级项将始终绘制在另一个 Z 值较低的同级项之上。
如果恢复 Z 值,则项目的插入顺序将决定其堆叠顺序。
Z 值不会以任何方式影响项目的大小。
默认 Z 值为 0。
它相对于另一个更大,它将在上面显示,否则它将在下面显示。
推荐阅读
- excel - 请帮助我解决图片中可用的#na 错误和#value 错误
- python - 在 Python 中平滑曲线,同时保留端点处的值和斜率
- sql - Oracle:根据结果集计数更新行
- r - 尝试对多个二进制变量使用 factor() 时,Cluster SE 健壮不起作用
- xml - 尝试在 XSD 中添加 type="xs:string" 时出错
- amazon-web-services - 如何将用户与组 (IAM) 与组织单位映射?
- reactjs - React、Typescript、d3js、Getting a No 重载与此调用匹配
- c# - 如何使用 docker 在带有 SQL 后端的 C# ASP.NET MVC Web 应用程序中创建下拉列表
- javascript - 反应递归。增量字符串
- ruby-on-rails - Rspec 测试是否调用了服务函数