Я создал 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 в моем основном пользовательском интерфейсе.
Как сказал @FrankOsterfeld:
painter->translate(780,425);
который переместил элемент в область, в которой находится boundingRect ().
Других решений пока нет …