广州网站定制开发公司哪家好,制作二维码免费软件,华为云助力企业网站安全保障,高质量外链Qt中在QLabel上画点#xff0c;重写QLabel类
QT中label进行绘图
1.首先新建一个类#xff0c;让这个类继承QLabel 2.在类中对鼠标点击事件及绘图事件进行重写 3.然后在UI框架下添加label控件#xff0c; 4.右键label控件#xff0c;添加重写的类#xff0c;将其提升为刚…Qt中在QLabel上画点重写QLabel类
QT中label进行绘图
1.首先新建一个类让这个类继承QLabel 2.在类中对鼠标点击事件及绘图事件进行重写 3.然后在UI框架下添加label控件 4.右键label控件添加重写的类将其提升为刚刚写好的类
mylabel.h
#ifndef MYLABEL_H
#define MYLABEL_H#include QObject
#include QLabel
#include QMouseEvent
#include QPainter
#include QPen
#include QPointclass MyLabel : public QLabel{Q_OBJECTpublic:int labelWidth;int labelHeight;struct pointCoord{int x;int y;};std::vectorpointCoord coordList;bool paintEnable true;public:explicit MyLabel(QWidget *parent 0);void enabelPaint(bool);void mousePressEvent(QMouseEvent *event);void paintEvent(QPaintEvent *event);// void mouseReleaseEvent(QMouseEvent *event);// void mouseMoveEvent(QMouseEvent *event);signals:void updatePoint(int x, int y, int labelWidth, int labelHeight);};#endif // MYLABEL_H
mylabel.cpp
#include mylabel.h#include QMessageBox#include QString#include QDebugMyLabel::MyLabel(QWidget *parent) : QLabel(parent){
;
}void MyLabel::enabelPaint(bool enable){if (enable){paintEnable true;} else {paintEnable false;}}void MyLabel::mousePressEvent(QMouseEvent *event){if (paintEnable){int x event-position().x();int y event-position().y();pointCoord coord;coord.x x;coord.y y;coordList.push_back(coord);labelWidth this-width();labelHeight this-height();emit updatePoint(x, y, labelWidth, labelHeight);update();}}void MyLabel::paintEvent(QPaintEvent *event){QLabel::paintEvent(event);QPainter painter(this);QPen pen; //设置画笔颜色、宽度pen.setColor(Qt::red);pen.setWidth(5);painter.setPen(pen);for (auto coord:coordList){painter.drawPoint(coord.x, coord.y);}}