QT中在QLabel显示图片并且利用鼠标点击画线
来源:互联网 发布:js跳转页面 开新窗口 编辑:程序博客网 时间:2024/05/29 18:35
最近在做在Label上显示图片并且通过鼠标点击画线,在网上查了很多零零散散的东西,收获也多
很多初学者更希望直接贴代码,这样可以模仿来写,我下面直接贴出我的项目中自己写的maLabel类(如果只是实现利用鼠标绘制,重写void paintEvent(QPaintEvent *event);void mousePressEvent(QMouseEvent *e); void mouseMoveEvent(QMouseEvent *e); void mouseReleaseEvent(QMouseEvent *e);即可,其他函数是我项目需求所以多写的,可以忽略)
申明myLabel类,继承QLabel,生成myLabel.h和myLabel.cpp文件
以下为我的代码,供参考。我只是实现了画一条直线,如果要画多条,可以用vector将之前若干条的信息干存下来,每次都绘制
myLabel.h
很多初学者更希望直接贴代码,这样可以模仿来写,我下面直接贴出我的项目中自己写的maLabel类(如果只是实现利用鼠标绘制,重写void paintEvent(QPaintEvent *event);void mousePressEvent(QMouseEvent *e); void mouseMoveEvent(QMouseEvent *e); void mouseReleaseEvent(QMouseEvent *e);即可,其他函数是我项目需求所以多写的,可以忽略)
申明myLabel类,继承QLabel,生成myLabel.h和myLabel.cpp文件
以下为我的代码,供参考。我只是实现了画一条直线,如果要画多条,可以用vector将之前若干条的信息干存下来,每次都绘制
myLabel.h
#ifndef MYLABEL_H#define MYLABEL_H#include <QLabel>#include <QPoint>#include <QColor>#include <QPaintEvent>#include <QImage>#include <QPixmap>class myLabel : public QLabel{ //Q_OBJECTpublic: myLabel(); //~myLabel(); //绘制线条 virtual void paintEvent(QPaintEvent *event) override; //鼠标按下 void mousePressEvent(QMouseEvent *e); //鼠标移动 void mouseMoveEvent(QMouseEvent *e); //鼠标抬起 void mouseReleaseEvent(QMouseEvent *e); //设置所画线条属性 void setLineColor(const QColor lineColor); void setLineSize(const int lineSize); //得到画线的起点和终点 QPoint getStartPoint(); QPoint getEndPoint(); void clear();private: QPoint lineStartPoint; //画线起点 QPoint lineEndPoint; //画线终点 QColor lineColor; //线条颜色 int lineSize; //5种线型 bool isPressed;};#endif // MYLABEL_H
myLabel.cpp
#include "myLabel.h"#include <QPen>#include<QPainter>myLabel::myLabel(){ this->lineStartPoint = QPoint(0,0); this->lineEndPoint = QPoint(0,0); this->lineColor = QColor(Qt::black); this->lineSize = 3;}//绘制线条void myLabel::paintEvent(QPaintEvent *event){ QLabel::paintEvent(event);//必须有,才能让背景图片显示出来 QPainter painter(this); QPen pen; pen.setColor(lineColor); pen.setWidth(lineSize); painter.setPen(pen); painter.drawLine(lineStartPoint,lineEndPoint);}//鼠标按下void myLabel::mousePressEvent(QMouseEvent *e){ lineStartPoint = e->pos(); lineEndPoint = e->pos(); //在图片上绘制 isPressed = true;}//鼠标移动void myLabel::mouseMoveEvent(QMouseEvent *e){ if(isPressed) { lineEndPoint=e->pos(); update(); }}//鼠标抬起void myLabel::mouseReleaseEvent(QMouseEvent *e){ isPressed=false; update();}void myLabel::setLineColor(const QColor lineColor){ this->lineColor = lineColor;}void myLabel::setLineSize(const int lineSize){ this->lineSize = lineSize;}QPoint myLabel::getStartPoint(){ return lineStartPoint;}QPoint myLabel::getEndPoint(){ return lineEndPoint;}void myLabel::clear(){ lineStartPoint = QPoint(0,0); lineEndPoint = QPoint(0,0); update();}
阅读全文
1 0
- QT中在QLabel显示图片并且利用鼠标点击画线
- 点击PushButton使得图片在QLabel上进行显示,并且自适应QLabel的控件大小
- qt QLabel 显示网络图片
- <Linux+Qt>在Widget中使用qlabel显示图片与动画
- Qt中在QLabel中连续的刷入图片
- Qt 在同一个QLabel中实现不同样式的显示
- Qt 在同一个QLabel中实现不同样式的显示
- 在QLabel中显示OpenCV的IplImage格式的图片
- Qt 中实现在控件中点击鼠标,就在鼠标点击处加载图片的方法
- Qt Qlabel显示图片新手教程
- openCV图片显示到Qt控件QLabel
- Android 在ViewPager中使用的可以画线,放大,保存,点击删除线条的自定义图片显示控件
- 在QT集成开发环境中用OpenCV读取一张图片显示在Qlabel上
- QLabel 自定义 显示图片 获得鼠标显示的Rect ROI
- 点击鼠标两点画线
- Qt中在QLabel上载入图片后在上面画矩形框的方法
- opencv学习笔记11 在图片中添加文字,点击鼠标显示位置坐标
- QLabel响应鼠标点击事件
- 从字符串中取出素数
- wps演示中在任务栏中显示所有窗口怎么设置
- 吃透Android计算器代码(2)
- 数据结构——二
- Meteor常用的命令
- QT中在QLabel显示图片并且利用鼠标点击画线
- Animation动画
- 解释性语言和编译性语言
- 通配符映射
- 蓝图构造函数ConstructionScript
- Linux日志管理
- Android 编程下 Touch 事件的分发和消费机制
- 在studio中使用libsdl2.so,编译SDL Demo
- PAT_乙级1003