求问大家,我用label显示图片,重写paintEvent来显示鼠标点击位置的一个矩形,在
mousePressEvent里用update()来实现随鼠标位置更新矩形,但是这样就会使之前的
矩形消失。
怎么样才能实现鼠标每点击一次,在鼠标位置显示一个矩形,且之前的不会消失。
代码如下:
QImageLabel.h
class QImageLabel : public QLabel
{
Q_OBJECT
public:
QImageLabel(QWidget *parent = 0);
virtual ~QImageLabel();
protected:
void paintEvent(QPaintEvent *event);
void mousePressEvent(QMouseEvent *event);
private:
QPoint currentpos;
};
QImageLabel.cpp
#include "QImageLabel.h"
#include <QtWidgets>
QImageLabel::QImageLabel(QWidget *parent):
QLabel(parent)
{
currentpos.setX(0);
currentpos.setY(0);
}
QImageLabel::~QImageLabel()
{
}
void QImageLabel::paintEvent(QPaintEvent *event)
{
QLabel::paintEvent(event); //需要调用父类的paintEvent事件,否则Label都无法绘制
QPainter painter(this);
painter.setPen(Qt::red);
painter.drawRect(currentpos.x() - 30, currentpos.y() - 30, 60, 60);
}
void QImageLabel::mousePressEvent(QMouseEvent *event)
{
currentpos = event->pos();
update();
}