一、目的:

实现在显示摄像头预览画面的QLabel上画框的功能

二、思路:

QT提供了画笔的功能类QPainter,QPainter在paintEvent函数中使用,所以重新写一个类,继承QLabel,再通过重写QLabel的void paintEvent(QPaintEvent *event)方法,实现画框的功能。并且为了不让新的QLabel组件遮挡底下的控件,设置新的QLabel透明化背景。

三、步骤:

1.重写一个类Rect 继承QLabel,并且声明paintEvent方法:

typedef struct{int x;int y;int width;int height;char *name;} RECT;class Rect : public QLabel{Q_OBJECTpublic:Rect(QWidget* parent=0);RECT rect;void setRect(RECT *r);protected:void paintEvent(QPaintEvent *event);};

2.构造函数

Rect::Rect(QWidget *parent):QLabel(parent){}

3.写setRect函数写入框的坐标以及长宽

void Rect::setRect(RECT *r){rect = *r;}

4.覆写void paintEvent(QPaintEvent *event):

void Rect::paintEvent(QPaintEvent *event){QLabel::paintEvent(event);if(rect.name != nullptr){QPainter painter;painter.begin(this);painter.setPen(QPen(Qt::red, 1, Qt::SolidLine, Qt::RoundCap));painter.drawRect(QRect(rect.x, rect.y, rect.width, rect.height));QString name = QString::fromLocal8Bit(rect.name,-1);painter.drawText(rect.x+rect.width, rect.y, name);painter.end();}}

5.初始化Rect类

Rect * show_rect = new Rect(this);show_rect->resize(640,720);show_rect->move(0,0);

6.透明化Rect类QLabel

show_rect->setStyleSheet("background:transparent");

7.在需要画框的地方调用update()方法重绘

show_rect->update();

四、参考文章:

QT CREATOR中如何在QLABEL上画矩形框并且保存画完后的图形

自学QT之让label透明和隐藏标题栏

QT重写QLabel画框并透明化背景相关推荐

  1. QT重写QPushButton的背景图片及填充

    QT重写QPushButton的背景图片及填充 刚学习完QT的基本使用,使用已知知识重写QPushButton类 刚学习完QT的基本使用,使用已知知识重写QPushButton类 因为要使用QT来实现 ...

  2. Qt组件-QLabel

    打开QLabel的头文件:qlabel.h,有一个重要的信息: Q_PROPERTY(QString text READ text WRITE setText)Q_PROPERTY(Qt::TextF ...

  3. Qt实现 QLabel显示文本与图片、动图

    QLabel概念: 在Qt中,QLabel类用于文本或图片(包括动图gif).视频的显示,并不提供用户交互功能, 如果需要交互,比如响应鼠标事件,根据面向对象的里氏替换原则,子类必须能够替换它们的父类 ...

  4. 基于QT的opencv照片美颜及背景更换

    基于QT的opencv照片美颜及背景更换 项目地址:QT美颜系统 一.软件架构 qt2.9.3 opencv3.4.16 二.安装教程 1.将opencv源文件中的cmake文件在qt中打开,通过ca ...

  5. QT:自定义QLabel实现点击事件

    实现QLabel点击事件,及自定义对话框@TOC 实现QLabel点击事件 我们经常会遇到,点击QLabel弹出一个Dialog进行数据的更新,但是QT本身的QLabel没有clicked事件,这时需 ...

  6. Qt中Qlabel 图片拖放显示

    Qt中Qlabel接受图片拖放 1. 先在ui框中放入label控件,并调至合适大小: 暂时就命名为:label 2. 代码中头文件应包含: #include <QUrl> #includ ...

  7. QT 设置QLabel文字竖直居中

    QT 设置QLabel文字竖直居中 设置水平居中是Qt::AlignCenter或Qt::AlignHCenter,竖直(vertical)是Qt::AlignVCenter. myLabel -&g ...

  8. QT tableWidget给单个表格添加背景颜色

    QT tableWidget给单个表格添加背景颜色 代码示例 QWidget *widget = new QWidget(); QString wStyle = QString("backg ...

  9. Qt中QLabel的背景图片设置问题

    在Qt开发的过程中,经常会遇到设置Label的背景图片问题,通常可以有一下两种方法设置: 方法1:通过setScaleContents来设置(有时候会出现svg图片无法自适应label大小的问题) Q ...

  10. 在Qt中使部分组件透明化

    本文主要是解决Qt中QGraphicsAbstractShapeItem,QPixmap,QPainter等组件的透明化显示问题. 在Qt中定义了一个常量,用于设置透明的颜色,即Qt::transpa ...

最新文章

  1. python配置opencv最简单_(Python)从零开始,简单快速学机器仿人视觉Opencv—第二节:OpenCV的视频操作...
  2. ML之xgboost:利用xgboost算法(自带方式)训练mushroom蘑菇数据集(22+1,6513+1611)来预测蘑菇是否毒性(二分类预测)
  3. nGQL-为什么路径越长,数量越多呢,直觉是条件越严格,路径数量会越少
  4. mysql 控制台全是_Mysql控制台命令大全
  5. 08-CoreData学习总结
  6. 协方差代表的意义是什么?
  7. 2021HDU多校6 - 7029 Median(思维)
  8. 一个SAP顾问的回忆:我过去很胖!
  9. SQL语言:嵌入式SQL知识笔记
  10. linux和windows和鸿蒙,linux很好,但为何大家都用Win,鸿蒙系统站错阵营了吗?
  11. 12306验证码为什么那么变态?都是这项深度学习应用给逼的
  12. 平台用户实名认证设计流程
  13. matlab:lena图像在空域和频域的均匀滤波
  14. 【转】书上的字快速弄到电脑上
  15. 出门在外的程序员注意了!! IDEA一定要设置为护眼的豆沙绿
  16. Python代码打包在xp系统上运行~~
  17. 新建销售群开场语句_销售会议开场白台词
  18. MacBook安装p7zip解压7z文件
  19. 弘辽科技:拼多多高客单价怎么改低价格提升?
  20. Python爬取猪八戒网站

热门文章

  1. 小米手机隐私相册在哪?将你的照片锁进“保险柜”
  2. boobooke大牛小牛们的视频教程
  3. 【湖南集训 4.2】正12面体
  4. 什么表示计算机的存储容量,存储容量
  5. 植物大战僵尸音乐计算机简谱,植物大战僵尸主题曲简谱|植物大战僵尸主题曲:Zombies on Your Lawn...
  6. java7 xp版下载64位,xp32位系统可用最高版本jdk64位系统win10 64位系统
  7. 康佳电视软件测试工程师,康佳电视怎么样之康佳55吋曲面人工智能电视试用测评...
  8. 【多目标优化算法】基于分解的多目标进化算法 MOEA/D
  9. 苹果iPad mini 5蜂窝数据版上架:3896元起
  10. Java简单项目:家庭记账系统