Если зажать ЛКМ и провести мышью, то получится линия, как и должно быть.
Это сам проект: https://vk.com/doc66577607_445871169
Это фрагмент кода с самим рисованием:
void paintScene::mousePressEvent(QGraphicsSceneMouseEvent *event)
{
if (event->button() == Qt::LeftButton)
{
addEllipse(event->scenePos().x() - brushSize,
event->scenePos().y() - brushSize,
(brushSize*2),
(brushSize*2),
pen,
brush);
previousPoint = event->scenePos();
}
}
void paintScene::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
{
if (event->buttons() == Qt::LeftButton)
{
addLine(previousPoint.x(),
previousPoint.y(),
event->scenePos().x(),
event->scenePos().y(),
QPen(color,brushSize*2,Qt::SolidLine,Qt::RoundCap));
previousPoint = event->scenePos();
}
}
UPD: разобрался. В функции changeColor не задавал цвета кисти и пера. Спасибо.
Ответ
В вызове addEllipse Вы используете pen и/или brush черного цвета.
Зачем Вы вообще в mousePressEvent что-то рисуете?
Там цвет задан другой.
Где - там? Для линии Вы каждый раз создаете новый pen с цветом color. Делайте то же самое в вызове addEllipse, и точка будет голубая:
addEllipse(event->scenePos().x() - brushSize,
event->scenePos().y() - brushSize,
(brushSize*2),
(brushSize*2),
QPen(color,brushSize*2,Qt::SolidLine,Qt::RoundCap),
brush);
И при чем здесь paintEvent? Речь идет о рисовании как реакции на движение мыши.
Комментариев нет:
Отправить комментарий