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

}

最新文章

  1. RHCSA试题分享
  2. Qt Write and Read XML File 读写XML文件
  3. 15个带给您优秀用户体验的移动应用 UI 设计
  4. 在cshtml页面中,以‘@’开始的表达式 表示C#语句,会被编译执行
  5. 连接、关联、JOIN、APPLY(SQL Server)
  6. 将EXCEL中的列拼接成SQL insert插入语句
  7. 使用Promise规定来处理ajax请求的结果
  8. c# 初识WPF
  9. 有关java中的hashCode问题
  10. Menu-右键弹出菜单
  11. Java函数2:计算两个日期相差的天数
  12. 和菜鸟一起学linux总线驱动之i2c死锁问题
  13. VB代码收集
  14. greenplum不能下载问题解决方法(转)
  15. 使用python以及工具包进行简单的验证码识别
  16. iOSOpenDev安装使用
  17. [leetcode]528. Random Pick with Weight按权重挑选索引
  18. jq以固定开头的class属性的名称
  19. 8 张脑图入门 JavaScript - 基础面试不倒
  20. flask高阶

热门文章

  1. Android内存管理-SoftReference的使用
  2. 【ACM-ICPC 2018 南京赛区网络预赛 L】Magical Girl Haze
  3. rabbitMQ学习笔记(三) 消息确认与公平调度消费者
  4. C++里面mutable的作用
  5. NYOJ 589 糖果
  6. [Ionic] Align and Size Text with Ionic CSS Utilities
  7. 数据结构 - 归并排序(merging sort) 具体解释 及 代码
  8. Mysql中You can't specify target table for update in FROM clause错误的意思是说,不能先select出同一表中的某些值,再update这个表(在同一语句中)。
  9. HDU 1113 Word Amalgamation (map 容器 + string容器)
  10. BZOJ 2751 容易题(easy) 快速幂+快速乘