.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. linux一些简单的操作命令

    命令ifconfig -a——查询自己ip地址命令top——查看cpu.内存命令uname——查看系统版本命令pwd——查看当前路径命令ln——建立连接 ln source_path target_p ...

  2. 3.2、Ansible单命令测试

    0.Ansible的group支持all.通配符(*).IP地址 1.查看Ansible的版本 $  ansbile  --version [root@test ~]# ansible --versi ...

  3. BA-siemens-TX-IO模块照片

    西门子楼宇自控用到的P1模块是这样的 TX-16D模块是这样的 TX-8X模块是这样的: TX-6R模块是这样的: TX-IO总线连接模块( 此模块供电和通讯加起来共需三芯线):

  4. [SharePoint][SharePoint2013循序渐进]SPS2013简介

    本章概要: 1.啥是SPS2013 2.SharePoint如何作用于团队协作和信息共享 3.SP2013有哪些用户权限 4.什么是SharePoint2013 online 5.SP在内部署和在线订 ...

  5. 在IntelliJ IDEA中创建Web项目

    在IntelliJ IDEA中创建Web项目 在IntelliJ IDEA中创建Web项目1,创建Maven WebProject选择File>New>Project 出现New Proj ...

  6. Routh-Hurwitz Criterion 劳斯稳定判据

    Routh-Hurwitz Criterion 为什么仅仅要有一个极点在右半平面,那么系统就不会稳定? 比如H(s) =( 1/(s+1) ) *  ( 1/(s+3) ) * ( 1/(s-2) ) ...

  7. HDU 4046 Panda(树状数组)

    Panda Time Limit: 10000/4000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Sub ...

  8. DAC0832、led、蜂鸣器

    52控制DAC0832芯片输出电流,让发光二极管D12由灭均匀变到最亮.再有亮变灭.在最亮和最灭的时候蜂鸣器发出报警声,完毕整个周期的时间是控制在5s左右. #include<reg52.h&g ...

  9. 【为小白菜打call】

    作为本校的竞赛生,我必须为我大OJ打call caioj,小白菜oj,顾名思义,就是为刚踏进OI的“小白菜”们准备的网站,里面包含了许多专题内容,各种模版和讲解视频 而且对于刚学习C++的同学,更有帮 ...

  10. System.setProperty 与 System.getProperty

    转自:https://www.cnblogs.com/woftlcj/p/8404451.html System可以有对标准输入,标准输出,错误输出流:对外部定义的属性和环境变量的访问:加载文件和库的 ...