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模板网!

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

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

相关文章

  • Qt中QLabel怎么用

    这篇文章给大家分享的是有关Qt中QLabel怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 主要成员函数: 1.void setText(QString); //设置label框内的文本. 2.void hide(); //隐藏label框. 3.void setBuddy(QWidget*); //把另一个部件设为label框的伙伴,方便快捷

    2024年02月17日
    浏览(33)
  • Qt 改变QLabel背景颜色

    在桌面应用程序开发时,需要显示一些状态信息,例如客户端是否掉线,串口是否打开等,我们可以用一些标志显示给用户,例如如果QLabel显示绿色,表示连接成功,显示黑色表示失败。 方法一:使用Qt调色板,代码如下: 只要改变R,G,B的值即可实现各种颜色,例如(0, 255

    2024年02月11日
    浏览(43)
  • Qt - QLabel设置字体颜色

    ** ** • 第一种,使用setPalette()方法如下: • 第二种,使用样式表如下: • 第三种,使用QStyle,在Qt Demo中有一个很好的讲解QStyle的例子,可以参考学习。 • 第四种,使用一些简单的HTML格式:

    2024年02月15日
    浏览(62)
  • Qt 之 QWidget QLabel

    Qt Creator 以工程项目 的方式对源码进行管理一个Qt Creator工程包含不同类型的文件 。 .pro 项目描述文件 .pro.user用户配置描述文件- .h头文件 .cpp源文件 .ui界面描述文件 资源文件(图片,音频,等) pro 项目描述文件的基本组成 #一注释起始符 : 以“#”开始,到这一行结束。快捷

    2024年02月13日
    浏览(64)
  • Qt 使用QLabel的派生类实现QLabel的双击响应

            在QLabel中没有双击等事件响应,需要 构建其 派生类 ,自定义 信号(signals) 、重载 事件函数(event) ,最后在Qwidget中 使用connect链接即可 ,进而实现响应功能。         对于其余没有需求事件响应的QObject同样适用。         此外,该功能同样可以 使用 事件过滤器 ,

    2024年02月13日
    浏览(49)
  • Qt5 QLabel标签控件

    需要 #include QLabel   qmake:  QT += widgets Inherits:   QFrame QLabel 类是 QFrame 类的直接子类,因此 QLabel 可以使用从 QFrame 类继承而来的边框效果 可用于显示纯文本、富文本、电影、图像等 QLabel 会试图猜测输入的文本是以纯文本还是以富文本的形式显示 默认情况下,QLabel 的对齐方

    2024年02月13日
    浏览(45)
  • QT笔记——QLabel设置自动换行

    在网上看了很多的例子,然后很多都去试发现很多的问题,要不就是不成功,要不就是对自己没用,然后就慢慢解决 1.QLabel 自带的 换行功能 这种方法 ,我试了一下,好像不支持英文 和 数字 效果如下:它并没有进行换行,不符合我们需要的 2.自定义写法 来让QLabel 进行 换行

    2024年02月11日
    浏览(38)
  • QT学习12:QLabel实现点击事件

    主要是通过安装过滤器,实现点击事件。 事件过滤器的操作: 首先给需要添加事件过滤器的部件 注册监听对象 ; 对象名-installEventFilter(true); 重写 eventFilter(QObject *obj, QEvent *event) 函数进行处理。

    2024年02月13日
    浏览(63)
  • Qt-在QLabel上显示Mat数据

    0. 写在前面         用于记录一下,在Qt上显示Mat的数据,记录代码如下;

    2024年04月08日
    浏览(34)
  • Qt——QLabel控件常见的属性、方法和信号

    一、QLabel 控件常见属性 二、QLabel 控件常见方法 三、QLabel 控件常见信号 方法: set+xxx设置属性、去掉set就是获取属性 所有控件中的属性和方法都是通用的 QLabel 控件 描述: QLabel 是一个用于显示文本或图像的控件。它通常被用作标签或显示静态信息的区域。 属性: 1. text:

    2024年02月11日
    浏览(36)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包