每天自定义一些qt 控件,让自己学到更多的东西,我们经常看到一些圆形的账号图片,我们知道常用QLabel加载图片,但是加载的都是方形的,而且qt并不像html 那样改变特别方便。

我们常见的图像如:

还有csdn的用户的:

都是这种圆形图片,想要需要我们重新定义控件,自己来画,才会出结果。

然后我们就从新定义一个类,来继承QLable 或者继承 QFrame :

这里提示一下,我定义类的时候把MyLabel 拼写错了,写成了MyLable 。大家自己写的时候演注意一下。

代码如下 :

#ifndef MYLABLE_H
#define MYLABLE_H#include <QObject>
#include<QLabel>
class MyLable :public QLabel
{Q_OBJECT
public:MyLable(QWidget* parent = nullptr);
signals:void signClick();
protected:void paintEvent(QPaintEvent *e);void mousePressEvent(QMouseEvent *ev);void mouseMoveEvent(QMouseEvent *ev);void mouseReleaseEvent(QMouseEvent *ev);private:bool m_set;//透明度的QPixmap oldMap;
};#endif // MYLABLE_H

cpp 代码:

#include "mylable.h"
#include <QPainter>
MyLable::MyLable(QWidget* parent):QLabel (parent)
{m_set = false;}void MyLable::paintEvent(QPaintEvent *e)
{if(nullptr != pixmap()){QPainter painter(this);//设置反锯齿painter.setRenderHints(QPainter::Antialiasing |QPainter::SmoothPixmapTransform);QPainterPath path;int round = qMin(width(),height());path.addEllipse(0,0,round,round);painter.setClipPath(path);oldMap = *pixmap(); //获取原来的if(m_set){QPixmap pixMap(":/images/images/2.jpg");painter.drawPixmap(-1,-1,width()+10,height()+10,pixMap);}else {painter.drawPixmap(-1,-1,width()+10,height()+10,oldMap);}}else {QLabel::paintEvent(e);}
}void MyLable::mousePressEvent(QMouseEvent *ev)
{m_set = true;update();QLabel::mousePressEvent(ev);
}void MyLable::mouseMoveEvent(QMouseEvent *ev)
{m_set = false;update();QLabel::mouseMoveEvent(ev);
}void MyLable::mouseReleaseEvent(QMouseEvent *ev)
{m_set = false;update();emit signClick();QLabel::mouseReleaseEvent(ev);
}

使用的方法:

   mylabel = new MyLable(this);QPixmap pixmap(":/images/images/1.jpg");mylabel->setPixmap(pixmap);mylabel->setGeometry(0,0,100,100);ui->layoutpicture->addWidget(mylabel);

效果图:

喜欢我的博客可以关注,点赞,让我们越来越好。

QT 自定义圆形QLabel 加载圆形图片相关推荐

  1. 超便捷好用的-圆形花瓣加载滚动图片插件spin.js

    使用ajax异步请求时显示过渡的加载滚动图片是在常用不过的事情,接下来和大家分享这个插件. 样子示例:(只有这一个样子,可以动态设置显示大小.花半数.颜色等各项参数) 注:如果需要更绚丽样式的童鞋,请 ...

  2. Glide 入门到精通之十八——Module 实例:用自定义尺寸优化加载的图片

    http://mrfu.me/2016/02/28/Glide_Module_Example_Optimizing/ 为何要在指定的尺寸下请求图片 在一个最近的项目中我们与一个多媒体服务端工作,它也是 ...

  3. 安卓自定义View实现加载gif图片

    开题:加载GIF的场景在安卓开发中还比较常见,网上也有一些三方法的框架会支持对gif的加载,在上篇博客为大家推荐的图片加载库Glide也支持gif的加载Glide工具类的简单封装,今天给大家分享通过自 ...

  4. Glide加载圆形图片和自定义圆角图片和对指定的角加载圆角

    先上效果图: 因注释很细,就不一一解释说明了! 1.Glide加载圆形图片: 自定义GlideCircleTransUtils继承BitmapTransformation,重写transform()方 ...

  5. Android Glide加载圆形图片,设置圆形边框

    Glide加载图片,Glide可以很方便的实现圆形加载并且也还可以设置变色边框. 关于Glide的加载在这里不详细说了,主要说一下自定义BitmapTransformation来实现圆形图片加载 st ...

  6. Gilde加载圆形图片

    实际开发中,很多项目中需要用到圆形图片,例如,项目中个人资料的用户头像.加载图片的框架有很多,我们就简单的说几个,及其他们的优缺点. 首先是Fresco,它的优点是其他几个框架没有的,或者说是其他几个 ...

  7. 安卓图片加载之使用universalimageloader加载圆形圆角图片

    前言 话说这universalimageloader加载图片对搞过2年安卓程序都是用烂了再熟悉不过了,就是安卓新手也是百度就会有一大堆东西出来,今天为什么这里还要讲使用universalimagelo ...

  8. Android Glide 加载圆形图片(绝对实用)

    1.导入依赖 implementation 'com.github.bumptech.glide:glide:4.6.1' 2.用Glide加载圆形图片 Glide.with(context).loa ...

  9. Picasso加载圆形图片和圆角图片

    (1)加载圆形图片 https://gist.github.com/julianshen/5829333 改进版支持Palltte https://gist.github.com/dtygel/71b ...

  10. Glide加载圆形图片带白色边框

    1.导入Glide依赖 compile 'com.github.bumptech.glide:glide:4.0.0-RC1' 2.创建一个类 继承BitmapTransformation /*** ...

最新文章

  1. iOS自动签名打包(xcodebuild)----常用
  2. 大连理工计算机专业导师,大连理工大学计算机科学与技术学院研究生导师简介-申彦明...
  3. 寒武纪首颗AI训练芯片亮相
  4. C语言诠释--为什么内存是线性分布的。
  5. The 2014 ACM-ICPC Asia Mudanjiang Regional First Round C
  6. docker如何修改挂载路径(挂载目录)?(没弄完,先去弄别的)
  7. python获取键盘输入_python如何获取键盘输入
  8. 【ElasticSearch】Es 源码之 CacheService 源码解读
  9. #敏捷个人# 每日认识101(15):成为一个有执行力的人
  10. Java Map 接口
  11. 一张表不能超过多少索引_论文一般查重率不能超过多少
  12. linux 永久修改 igmp 版本,Linux环境变量的修改(永久,暂时)
  13. linux虚拟实验室关闭了,Linux在线虚拟云实验室,提升RHCE考试通过率
  14. Oracle效率提升
  15. bs4爬取笔趣阁小说
  16. 三阶魔方大中小魔公式_三阶魔方花样大汇总 ,带公式带图
  17. python开发桌面便签_python制作一个桌面便签软件
  18. 奈奎斯特定理与香农定理
  19. _DataStructure_C_Impl:求图G中从顶点u到顶点v的一条简单路径
  20. HDU-1111解题报告

热门文章

  1. pr开放式字幕(同步台词)
  2. PR字幕不显示的问题(已解决)
  3. 深度学习半年学习心得(如何入门)
  4. 单细胞文章解读——用单细胞RNA测序技术分析与肿瘤转移相关的细胞间通讯
  5. mysql系统表存放表结构_mysql数据库表结构
  6. 寒武纪2021数字后端笔试题
  7. Excel求和怎么操作?如何运用sum函数进行求和
  8. RNN分类IMDB电影评分
  9. 液晶手写板原理拆解_天猫babycare儿童液晶手写板详情页拆解
  10. matlab如何进行四维拟合,matlab四维插值拟合