Qt--在Label上画矩形
1、实现方法:
需要继承QLabel并重写以下函数实现:
void mousePressEvent(QMouseEvent *ev);
void mouseMoveEvent(QMouseEvent *ev);
void mouseReleaseEvent(QMouseEvent *ev);
void paintEvent(QPaintEvent *);
2、源代码如下:
mylabel.h
#ifndef MYLABEL_H
#define MYLABEL_H
#include <QLabel>
#include <QMouseEvent>
#include <QDebug>
#include <QPaintEvent>
#include <QPainter>
class MyLabel : public QLabel
{
Q_OBJECT
public:
explicit MyLabel(QWidget *parent = 0);
protected:
void mousePressEvent(QMouseEvent *ev);
void mouseMoveEvent(QMouseEvent *ev);
void mouseReleaseEvent(QMouseEvent *ev);
void paintEvent(QPaintEvent *);
private:
int x1;
int x2;
int y1;
int y2;
};
#endif // MYLABEL_H
mylabel.cpp
#include "mylabel.h"
MyLabel::MyLabel(QWidget *parent) : QLabel(parent)
{
}
void MyLabel::paintEvent(QPaintEvent *)
{
QPainter painter(this);
painter.setPen(QPen(Qt::red, 2));
painter.drawRect(QRect(x1, y1, x2 - x1, y2 - y1));
}
void MyLabel::mousePressEvent(QMouseEvent *ev)
{
x1 = ev->x();
y1 = ev->y();
}
void MyLabel::mouseMoveEvent(QMouseEvent *ev)
{
x2 = ev->x();
y2 = ev->y();
update();
}
void MyLabel::mouseReleaseEvent(QMouseEvent *ev)
{
}
3、效果
还没有评论,来说两句吧...