Qt QGraphicsItem рисует многоугольник внутри boundingRect() отдельного класса?

Я создал GraphicsItem в новом классе и нарисовал многоугольник, однако вместо того, чтобы рисовать его внутри boundingRect() для класса, который он рисует в основном GraphicsView в координатах, я надеялся, что он будет нарисован внутри boundingRect().

Detector::Detector()
{
    Pressed = false; //Initally the pressed boolean is false, it is not pressed
    setFlag(ItemIsMovable);
}    

QRectF Detector::boundingRect() const
{
    return QRectF(780,425,70,40);
}

void Detector::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
{
    QRectF ItemBoundary = boundingRect();
    QBrush *fillBrush = new QBrush(QColor(83,71,65));


    QPolygon DetectorPolygon;
    DetectorPolygon << QPoint(0,0);
    DetectorPolygon << QPoint(20,10);
    DetectorPolygon << QPoint(70,10);
    DetectorPolygon << QPoint(70,20);
    DetectorPolygon << QPoint(20,20);
    DetectorPolygon << QPoint(0,40);

    QPen borderPen;
    borderPen.setWidth(2);
    borderPen.setColor(QColor(152,133,117));

    painter->setBrush(*fillBrush);
    painter->setPen(borderPen);
    painter->drawPolygon(DetectorPolygon);


//    painter->fillRect(ItemBoundary,*fillBrush);
//    painter->drawRect(ItemBoundary);

}

Последние две строки, если они не закомментированы, заполняют boundingRect() прямоугольником, и я могу передать ему переменную ItemBoundary в отличие от многоугольника выше.

Как я могу передать ItemBoundary (=BoundingRect()) в полигон тоже?

Изменить: По сути, я хотел бы нарисовать многоугольник, который можно перемещать и в виде отдельного класса, чтобы отправить в QGraphicsView в моем основном пользовательском интерфейсе.

1 ответ

Решение

Как сказал @FrankOsterfeld:

painter->translate(780,425);

который переместил элемент в область, в которой находится boundingRect().

Другие вопросы по тегам