Label,PushButton,ToolButton 实现动态图片按钮,Label显示gif动画
2024-08-31 09:19:02
.h文件
public:
explicit event(QWidget *parent = 0);
~event();
QImage image;
QLabel *label;
QLabel *label2;
QPixmap p2;
QPalette pl;
QIcon icon;
QToolButton *btn;
QPushButton *pb;
public slots:
bool eventFilter(QObject*,QEvent*);
.cpp文件
image.load(":/images/x.png");
p2.load(":/images/xx.png");
label = new QLabel(this);
label->setPixmap(QPixmap::fromImage(image));
pb = new QPushButton(this);
pb->setFlat(true);//去边框
icon.addPixmap(p2);
pb->setIcon(icon);//设置背景
pb->setIconSize(p2.size());
/* *********另一种设置背景******
pb->setObjectName("pb");//使以下的作用域只作用于pb
pb->setStyleSheet("QPushButton#pb{border-image:url(:/images/1.png)}QPushButton::pressed#pb{border-image:url(:/images/100.png)}");
*/
btn = new QToolButton (this);
btn->setText("test");
btn->setToolButtonStyle(Qt::ToolButtonTextUnderIcon);//文字与图片下方显示
btn->setIcon(p2);
btn->setAutoRaise(true);//去边框
btn->setIconSize(p2.size());
QGridLayout *lay = new QGridLayout(this);
lay->addWidget(label,0,0);
lay->addWidget(btn,1,1);
lay->addWidget(pb,2,2);
lay->setMargin(10);
/*************控件安装过滤器***********/
label->installEventFilter(this);
pb->installEventFilter(this);
btn->installEventFilter(this);
/*************显示GIF动画****************/
label2= new QLabel(this);
label2->setGeometry(350,50,150,213);
QMovie *movie = new QMovie(":/images/32.gif");
label2->setMovie(movie);
movie->start();
}
bool event::eventFilter(QObject*w,QEvent*e)
{
if(w == label)
{
if(e->type() == QEvent::MouseButtonPress)
{
QMatrix ma;
ma.scale(0.5,0.5);
QImage im = image.transformed(ma);
label->setPixmap(QPixmap::fromImage(im));
}
if(e->type() == QEvent::MouseButtonRelease)
{
label->setPixmap(QPixmap::fromImage(image));
}
}
if(w == btn)
{
if(e->type() == QEvent::MouseButtonPress)
{
QMatrix ma;
ma.scale(0.8,0.8);
QPixmap px = p2.transformed(ma);
icon.addPixmap(px);
btn->setIcon(px);
}
if(e->type() == QEvent::MouseButtonRelease)
{
btn->setIcon(p2);
}
}
if(w ==pb)
{
if(e->type() == QEvent::MouseButtonPress)
{
QMatrix ma;
ma.scale(0.8,0.8);
QPixmap px = p2.transformed(ma);
icon.addPixmap(px);
pb->setIcon(px);
}
if(e->type() == QEvent::MouseButtonRelease)
{
pb->setIcon(p2);
}
}
return QDialog::eventFilter(w,e);
}
最新文章
- RHCSA试题分享
- Qt Write and Read XML File 读写XML文件
- 15个带给您优秀用户体验的移动应用 UI 设计
- 在cshtml页面中,以‘@’开始的表达式 表示C#语句,会被编译执行
- 连接、关联、JOIN、APPLY(SQL Server)
- 将EXCEL中的列拼接成SQL insert插入语句
- 使用Promise规定来处理ajax请求的结果
- c# 初识WPF
- 有关java中的hashCode问题
- Menu-右键弹出菜单
- Java函数2:计算两个日期相差的天数
- 和菜鸟一起学linux总线驱动之i2c死锁问题
- VB代码收集
- greenplum不能下载问题解决方法(转)
- 使用python以及工具包进行简单的验证码识别
- iOSOpenDev安装使用
- [leetcode]528. Random Pick with Weight按权重挑选索引
- jq以固定开头的class属性的名称
- 8 张脑图入门 JavaScript - 基础面试不倒
- flask高阶
热门文章
- Android内存管理-SoftReference的使用
- 【ACM-ICPC 2018 南京赛区网络预赛 L】Magical Girl Haze
- rabbitMQ学习笔记(三) 消息确认与公平调度消费者
- C++里面mutable的作用
- NYOJ 589 糖果
- [Ionic] Align and Size Text with Ionic CSS Utilities
- 数据结构 - 归并排序(merging sort) 具体解释 及 代码
- Mysql中You can't specify target table for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表(在同一语句中)。
- HDU 1113 Word Amalgamation (map 容器 + string容器)
- BZOJ 2751 容易题(easy) 快速幂+快速乘