QT 自定义圆形QLabel 加载圆形图片
每天自定义一些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 加载圆形图片相关推荐
- 超便捷好用的-圆形花瓣加载滚动图片插件spin.js
使用ajax异步请求时显示过渡的加载滚动图片是在常用不过的事情,接下来和大家分享这个插件. 样子示例:(只有这一个样子,可以动态设置显示大小.花半数.颜色等各项参数) 注:如果需要更绚丽样式的童鞋,请 ...
- Glide 入门到精通之十八——Module 实例:用自定义尺寸优化加载的图片
http://mrfu.me/2016/02/28/Glide_Module_Example_Optimizing/ 为何要在指定的尺寸下请求图片 在一个最近的项目中我们与一个多媒体服务端工作,它也是 ...
- 安卓自定义View实现加载gif图片
开题:加载GIF的场景在安卓开发中还比较常见,网上也有一些三方法的框架会支持对gif的加载,在上篇博客为大家推荐的图片加载库Glide也支持gif的加载Glide工具类的简单封装,今天给大家分享通过自 ...
- Glide加载圆形图片和自定义圆角图片和对指定的角加载圆角
先上效果图: 因注释很细,就不一一解释说明了! 1.Glide加载圆形图片: 自定义GlideCircleTransUtils继承BitmapTransformation,重写transform()方 ...
- Android Glide加载圆形图片,设置圆形边框
Glide加载图片,Glide可以很方便的实现圆形加载并且也还可以设置变色边框. 关于Glide的加载在这里不详细说了,主要说一下自定义BitmapTransformation来实现圆形图片加载 st ...
- Gilde加载圆形图片
实际开发中,很多项目中需要用到圆形图片,例如,项目中个人资料的用户头像.加载图片的框架有很多,我们就简单的说几个,及其他们的优缺点. 首先是Fresco,它的优点是其他几个框架没有的,或者说是其他几个 ...
- 安卓图片加载之使用universalimageloader加载圆形圆角图片
前言 话说这universalimageloader加载图片对搞过2年安卓程序都是用烂了再熟悉不过了,就是安卓新手也是百度就会有一大堆东西出来,今天为什么这里还要讲使用universalimagelo ...
- Android Glide 加载圆形图片(绝对实用)
1.导入依赖 implementation 'com.github.bumptech.glide:glide:4.6.1' 2.用Glide加载圆形图片 Glide.with(context).loa ...
- Picasso加载圆形图片和圆角图片
(1)加载圆形图片 https://gist.github.com/julianshen/5829333 改进版支持Palltte https://gist.github.com/dtygel/71b ...
- Glide加载圆形图片带白色边框
1.导入Glide依赖 compile 'com.github.bumptech.glide:glide:4.0.0-RC1' 2.创建一个类 继承BitmapTransformation /*** ...
最新文章
- iOS自动签名打包(xcodebuild)----常用
- 大连理工计算机专业导师,大连理工大学计算机科学与技术学院研究生导师简介-申彦明...
- 寒武纪首颗AI训练芯片亮相
- C语言诠释--为什么内存是线性分布的。
- The 2014 ACM-ICPC Asia Mudanjiang Regional First Round C
- docker如何修改挂载路径(挂载目录)?(没弄完,先去弄别的)
- python获取键盘输入_python如何获取键盘输入
- 【ElasticSearch】Es 源码之 CacheService 源码解读
- #敏捷个人# 每日认识101(15):成为一个有执行力的人
- Java Map 接口
- 一张表不能超过多少索引_论文一般查重率不能超过多少
- linux 永久修改 igmp 版本,Linux环境变量的修改(永久,暂时)
- linux虚拟实验室关闭了,Linux在线虚拟云实验室,提升RHCE考试通过率
- Oracle效率提升
- bs4爬取笔趣阁小说
- 三阶魔方大中小魔公式_三阶魔方花样大汇总 ,带公式带图
- python开发桌面便签_python制作一个桌面便签软件
- 奈奎斯特定理与香农定理
- _DataStructure_C_Impl:求图G中从顶点u到顶点v的一条简单路径
- HDU-1111解题报告