Я рисую поверх QLabel, который содержит изображение (QImage img), но после отпускания курсора мыши рисунок исчезает. Я думаю, что painttevent рисует на ярлыке, а не на изображении mPix, как я могу нарисовать на изображении? так что даже если я уберу курсор, рисунок останется
После этого я хочу переместить эти геометрические фигуры и изменить их размер курсором, если у кого-то есть идея, чтобы помочь мне.
label.cpp
:
void Label::mousePressEvent(QMouseEvent* event) {
mousePressed = true;
switch (_paintMode) {
case PaintLine: {
mLine.setP1(event->pos());
mLine.setP2(event->pos());
}
break;
case PaintCirc: {
mCirc.setTopLeft(event->pos());
mCirc.setBottomRight(event->pos());
}
}
}
void Label::mouseMoveEvent (QMouseEvent* mouse_event) {
if (mouse_event->type() == QEvent::MouseMove) {
switch (_paintMode) {
case PaintLine: {
mLine.setP2(mouse_event->pos());
}
break;
case PaintCirc:{
mCirc.setBottomRight(mouse_event->pos());
}
}
update();
}
}
void Label::paintEvent(QPaintEvent* event) {
QLabel::paintEvent(event);
QPainter painter(this);
QPen pen(Qt::red, 3, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin);
painter.setPen(pen);
if (mousePressed) {
switch (_paintMode) {
case PaintLine: {
painter.drawLine(mLine);
}
break;
case PaintCirc: {
painter.drawEllipse(mCirc);
}
}
}
}
void Label::mouseReleaseEvent(QMouseEvent*) {
mousePressed = false;
}
Mainwindow.cpp
:
void MainWindow::on_actionOpen_triggered() {
mPix=QPixmap::fromImage(img);
ui->label->setPixmap(mPix);
}