求问大神:Qt用label显示图片,如何实现第一次点击后显示矩形,第二次点击后再显示一个矩形,之前的不消失

求问大家,我用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(); 
}


2个回答

兄弟给你说一个方法,开一个vector,每一次点击后,就添加进去就OKAY!,每一次点击再遍历显示~

请问你的主窗口里的槽函数是怎么写的啊??

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问