Qt Graphics, переместить объект вперед или назад - PullRequest
0 голосов
/ 28 мая 2018

У меня есть два объекта: 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);
}

Я не знаю, как двигать объект вперед или назад.

1 Ответ

0 голосов
/ 28 мая 2018

Вы должны использовать свойство Z-значения, поскольку документы говорят:

void QGraphicsItem :: setZValue (qreal z)

Устанавливает Z-значение элемента в z.Значение Z определяет порядок размещения элементов (соседних).Элемент с высоким значением Z всегда будет отображаться поверх другого элемента с более низким значением Z.

Если вы восстановите значение Z, порядок вставки элемента будет определять порядок его наложения.

Z-значение никак не влияет на размер элемента.

По умолчанию Z-значение равно 0.

Чем оно больше по сравнению с другим, тем онобудет показано выше, в противном случае будет ниже.

...