.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);

}

Label,PushButton,ToolButton 实现动态图片按钮,Label显示gif动画的更多相关文章

  1. 01-实现图片按钮的缩放、动画效果(block的初步应用)

    #import "ViewController.h" #define kDelta 60 @interface ViewController () @end @implementa ...

  2. Egret动态设置按钮的图片

    参考: 动态设置Button按钮的状态图片 按钮有3个状态,up down disabled.这里区别于source,source.down,source.disabled,而是每个状态单独一个ima ...

  3. iOS系列 基础篇 06 标签和按钮 (Label & Button)

    iOS系列 基础篇 06 标签和按钮 (Label & Button) 目录: 标签控件 按钮控件 小结 标签和按钮是两个常用的控件,下面咱们逐一学习. 1. 标签控件 使用Single Vi ...

  4. salesforce 零基础学习(三十四)动态的Custom Label

    custom label在项目中经常用到,常用在apex class或者VF里面用来显示help text或者error message.有的时候我们需要用到的信息是动态变化的,那样就需要动态来显示信 ...

  5. 自动计算label字体的高度和图片拉伸处理(封装成分类分享)

    自动计算label字体的高度和图片拉伸处理 *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bo ...

  6. 用图片作为label,for属性IE下不起作用

    IE浏览器存在一个BUG,当你使用label的for属性达到点击label使对应的表单元素聚焦,label中的内容为图片时,IE浏览器下不起作用. 例如: <input type="c ...

  7. atitit.GUI图片非规则按钮跟动态图片切换的实现模式总结java .net c# c++ web html js

    atitit.GUI图片非规则按钮跟动态图片切换的实现模式总结java .net c# c++ web html js 1. 图片按钮的效果总结 1 1.1. 按钮图片自动缩放的. 1 1.2. 不要 ...

  8. python tkinter动态追加按钮等控件可能遇到的问题

    小爬最近给同事制作一个小爬虫:具体要求: 1.每天自动定时触发: 2.模拟用户自动登陆: 3.自动爬取对应API接口数据: 4.对爬取结果进行逻辑判断,对符合条件的数据进行规则化列示: 5.列示的行项 ...

  9. winfrom播放动态图片

    winfrom是不能直接加载的动态图片的.只能够自己写方法实现. 具体代码如下: using System; using System.Collections.Generic; using Syste ...

随机推荐

  1. struct 模块简介

    用处 按照指定格式将Python数据转换为字符串,该字符串为字节流,如网络传输时,不能传输int,此时先将int转化为字节流,然后再发送; 按照指定格式将字节流转换为Python指定的数据类型; 处理 ...

  2. ASP.NET-AD开发技巧

    分享一篇很好的介绍AD属性的文章 AD图片插件 如何给AD添加图片 http://www.doc88.com/p-9542932844870.html AD过滤条件 重命名ou使用user.Renam ...

  3. [JAVA]比毫秒System.currentTimeMillis()更精确的时间戳(纳米级时间戳)

     纳秒 ns(nanosecond):纳秒, 时间单位.一秒的10亿分之中的一个,即等于10的负9次方秒. 经常使用作 内存读写速度的单位,其前面数字越小则表示速度越快. 1纳秒=1000 皮秒 ...

  4. CSS BFC学习笔记

    BFC,全称是Block Formatting Context,块级格式化上下文. 详细是什么,能够理解为页面元素的一种特性.触发了BFC的元素往往会产生一些对刚開始学习的人而言意想不到的效果. 触发 ...

  5. UML中的序列图(时序图)

    序列图将交互关系表示为一个二维图.纵向是时间轴,时间沿竖线向下延伸. 横向轴代表了在协作中各独立对象的类元角色.类元角色用生命线表示.当对象存在时,角色用一条虚线表示,当对象的过程处于激活状态时.生命 ...

  6. Swift 实践之UIWebView

    1.选中工程,点击右键,New File>在iOS下选中Othe>Empty,生成一个.js的脚本文件,将代码粘贴过去保存; var script = document.createEle ...

  7. Thread.setDaemon设置说明

    转载地址:http://blog.csdn.net/m13666368773/article/details/7245570 Thread.setDaemon的用法,经过学习以后了解: 1. setD ...

  8. [Java]serialVersionUID的作用

    简单来说,Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的.在进行反序列化时,JVM会把传来的 字节流中的serialVersionUID与本地相应实体(类 ...

  9. Vmware 安装samba

    samba是什么samba是什么?能干什么? samba 是基于SMB协议(ServerMessage Block,信息服务块)的开源软件,samba也可以是SMB协议的商标.SMB是一种Linux. ...

  10. 38.Qt模型/视图结构

    1.模型/视图类 2.模型 3.视图 4.代理 1 模型/视图类 InterView框架提供了一些可以直接使用的模型类和视图类,如QStandardModel类,QDirModel类,QStringL ...