을 사용하여 동적 피드백이있는 2 포인트 선을 그리기 때문에 두 점 사이에 선을 그려야합니다. 마우스 왼쪽 버튼을 클릭하면 선이 시작되고 마우스를 움직이면 선이 동적으로 그려집니다 (선의 미리보기와 거의 비슷 함). 왼쪽 마우스를 다시 클릭하면 선이 영구적으로 그려집니다. QPaintEvents에 대한 다른 많은 게시물이 있으며 사용 된 기술 중 일부를 결합했지만 어떤 이유로 캔버스에 그려진 내용이 없습니다. 다음은 코드입니다.Qt 4.7 - paintEvent
void Main::mousePressEvent(QMouseEvent * event)
{
if (event->button() == Qt::LeftButton) {
QPointF pos = event->pos();
if(mStartPoint.isNull()) {
if(josh.contains(pos))
mStartPoint = pos;
} else {
canvas.addLine(mStartPoint.x(),mStartPoint.y(),pos.x(),pos.y());
mStartPoint = QPointF();
}
}
}
bool Main::eventFilter(QObject *obj, QEvent *event)
{
if (event->type() == QEvent::MouseMove)
{
QMouseEvent *mouseEvent = static_cast<QMouseEvent*>(event);
if (!mStartPoint.isNull()) {
m_targetImage = QImage(canvas.width(),canvas.height(),QImage::Format_ARGB32);
QPainter p;
p.begin(&m_targetImage);
p.drawLine(mStartPoint, mouseEvent->pos());
p.end();
}
statusBar()->showMessage(QString("Mouse move (%1,%2)").arg(mouseEvent->pos().x()).arg(mouseEvent->pos().y()));
}
return false;
}
void Main::paintEvent(QPaintEvent *pe)
{
QPainter painter(this);
QPen pen(Qt::red);
pen.setWidth(10);
painter.setPen(pen);
painter.drawImage(0, 0, m_targetImage);
}
어떤 도움을 주실 수 있나요? 감사! Josh