Qt中在QLabel上画点,重写QLabel类

这篇具有很好参考价值的文章主要介绍了Qt中在QLabel上画点,重写QLabel类。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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 <QPoint>


class MyLabel : public QLabel

{

    Q_OBJECT

public:

    int labelWidth;
    int labelHeight;

    struct pointCoord{
        int x;
        int y;
    };

    std::vector<pointCoord> 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文章来源地址https://www.toymoban.com/news/detail-647613.html

#include "mylabel.h"

#include <QMessageBox>

#include <QString>

#include <QDebug>


MyLabel::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);
    }

}

到了这里,关于Qt中在QLabel上画点,重写QLabel类的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

原文地址:https://blog.csdn.net/qq_34445574/article/details/132228612

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包