当前位置: 首页 > news >正文

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_OBJECTpublic: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

#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);}}
http://www.lryc.cn/news/124741.html

相关文章:

  • ssm+vue小型企业办公自动化系统源码和论文PPT
  • C++ STL priority_queue
  • [PyTorch][chapter 50][创建自己的数据集 2]
  • SQL-每日一题【1341. 电影评分】
  • 基于DBN的伪测量配电网状态估计,DBN的详细原理
  • Python运算符全解析:技巧与案例探究
  • NPCon:AI模型技术与应用峰会北京站 (参会感受)
  • 为什么爬虫要用高匿代理IP?高匿代理IP有什么优点
  • 【JavaWeb】MySQL约束、事务、多表查询
  • 【并发编程】自研数据同步工具优化:创建线程池多线程异步去分页调用其他服务接口获取海量数据
  • 七、dokcer-compose部署springboot的jar
  • k8s 使用 containerd 运行时配置 http 私服
  • 【新品发布】ChatWork企业知识库系统源码
  • 疫情打卡 vue+springboot疾病防控管理系统java jsp源代码
  • python --连接websocket
  • 数据库内日期类型数据大于小于条件查找注意事项
  • 网易有道押宝大模型,打响智能硬件突围战
  • KAFKA第二课之生产者(面试重点)
  • Mybatis 源码 ∞ :杂七杂八
  • 堆的实现以及应用
  • MySql011——检索数据:过滤数据(使用正则表达式)
  • 数据结构与算法-栈(LIFO)(经典面试题)
  • NSI45030AT1G LED驱动器方案为汽车外部及内部照明恒流稳流器(CCR)方案
  • uni-app中使用pinia
  • Spring之事务管理
  • linux常见的mysql问题
  • 常见分辨率时序信息
  • 机器人CPP编程基础-05完结The End
  • 数据库应用系统DBAS功能设计与实施(三级数据库)
  • 快速幂典型