Я реализовал класс Arrow в приведенном здесь примере, и он работает хорошо. Теперь я пытаюсь заменить линию ломаной линией, где линия перемещается только в направлениях x и y.
Это мой код, он хорошо работает при вставке строки, но не работает, когда я пытаюсь переместить элементы, соединенные линией. Я считаю, что проблема может быть в методе updatePosition(), но я не уверен, как его изменить, чтобы работа с полиЛинией.
void Arrow::updatePosition()
{
QLineF newLine(myStartPin->scenePos(), myEndPin->scenePos());
setLine(newLine);
}
void Arrow::paint(QPainter *painter, const QStyleOptionGraphicsItem *, QWidget *)
{
if (myStartPin->collidesWithItem(myEndPin))
return;
QPen myPen = pen();
myPen.setColor(myColor);
qreal arrowSize = 10;
painter->setPen(myPen);
painter->setBrush(Qt::NoBrush); // No fill for the lines
// Define points for the polyline
QVector polylinePoints;
QPointF startPoint = myStartPin->scenePos();
QPointF endPoint = myEndPin->scenePos();
// Calculate intermediate points for the polyline
QPointF midPoint1((startPoint.x() + endPoint.x()) / 2, startPoint.y());
QPointF midPoint2((startPoint.x() + endPoint.x()) / 2, endPoint.y());
polylinePoints
Подробнее здесь: https://stackoverflow.com/questions/787 ... -poly-line