У меня проблемы с моим проектом. Я пытаюсь нарисовать в области визуализации курс для автомобилей (улиц), который может содержать как прямые линии, так и кривые. Для этого я думал о том, чтобы в первую очередь нарисовать линии, а затем с помощью мыши выбрать одну линию и преобразовать ее в кривую, перемещая мышь (кривую, которая имеет точку взгляда на линии, выбранной мышью). До сих пор мне удавалось рисовать только точки в области рендеринга и автоматически генерировать линии между этими точками, но я не уверен, как с помощью мыши преобразовать линию в кривую.
Мой код до сих пор:
renderarea.cpp:
<code>
RenderArea::RenderArea(QWidget *parent)
: QWidget(parent)
{
setBackgroundRole(QPalette::Base);
setAutoFillBackground(true);
}
void RenderArea::mousePressEvent(QMouseEvent *e)
{
point = e->pos();
updateList(point);
this->update();
}
void RenderArea::updateList(const QPoint& p)
{
Point point;
point.point = p;
list.append(point);
if (list.count()>1)
lineAdded(point);
}
void RenderArea::lineAdded(const Point &p)
{
Line temp;
temp.endPoint = p;
temp.startPoint = list.at(list.count() - 2);
lines.append(temp);
}
void RenderArea::paintEvent(QPaintEvent * /* event */)
{
int i;
QPainter painter(this);
painter.setPen(QPen(Qt::black,2));
for (i = 0; i < list.size(); ++i)
painter.drawPoint(list[i].point);
for (i = 0; i < lines.size(); ++i)
painter.drawLine(lines[i].startPoint.point, lines[i].endPoint.point);
}
Надеюсь, ты сможешь мне помочь. Заранее спасибо.