关闭

Qt/C++ 360安全卫士主界面动态按钮demo

标签: QtQt按钮按钮美化
2309人阅读 评论(0) 收藏 举报
分类:

一,先上最终效果图

                                                                   

 由于制不来gif就只能传个hover状态的了,所以看不出实际效果了

                                 

二,主要代码:

      1.头文件

 #include<QObject>

#include <QWidget>
#include<QPaintEvent>
#include<QEvent>
#include<QPushButton>
#include<qpropertyanimation.h>
#include<QDebug>

class my360button : public QPushButton
{
    Q_OBJECT
public:
    my360button(QPixmap pixnormal,QPixmap pixenter,QPixmap pixleave,QWidget*parent);
    ~my360button();
protected:
    void enterEvent(QEvent*);
    void leaveEvent(QEvent*);
    void paintEvent(QPaintEvent*);
    QPropertyAnimation*m_enteranimation;
    QPropertyAnimation*m_leaveanimation;
    QList<QPixmap> m_enterlist;
    QList<QPixmap> m_leavelist;
    QPixmap m_pixnormal;
    int m_enterIndex;
    int m_leaveIndex;
    bool m_enter;
    bool m_leave;
public slots:
    void entervaluechange(QVariant var){m_enterIndex=var.toInt();update();}
    void leavevaluechange(QVariant var){m_leaveIndex=var.toInt();update();qDebug()<<m_leaveIndex;}
};

 .cpp文件


#include"my360button.h"

#include<QPainter>
#include<QDebug>
my360button::my360button(QPixmap pixnormal,QPixmap pixenter,QPixmap pixleave,QWidget*parent):QPushButton(parent)
{
    setCursor(Qt::PointingHandCursor);
    m_leave=false;
    m_enter=true;
    m_leaveIndex=0;
    m_enterIndex=0;
    m_pixnormal=pixnormal;
    for(int i=0;i<10;i++)//进入
    {
        m_enterlist<<pixenter.copy(i*(pixenter.width()/10),0,pixenter.width()/10,pixenter.height());
    }
    for(int j=0;j<8;j++)//离开
    {
        m_leavelist<<pixleave.copy(j*(pixleave.width()/8),0,pixleave.width()/8,pixleave.height());
    }
    m_enteranimation=new QPropertyAnimation(this,"");
    m_enteranimation->setStartValue(0);
    m_enteranimation->setEndValue(9);
    m_enteranimation->setDuration(600);
    connect(m_enteranimation,SIGNAL(valueChanged(QVariant)),this,SLOT(entervaluechange(QVariant)));
    m_leaveanimation=new QPropertyAnimation(this,"");
    m_leaveanimation->setStartValue(0);
    m_leaveanimation->setEndValue(7);
    m_leaveanimation->setDuration(600);
    connect(m_leaveanimation,SIGNAL(valueChanged(QVariant)),this,SLOT(leavevaluechange(QVariant)));
}
my360button::~my360button()
{
    delete m_leaveanimation;
    delete m_enteranimation;
}
void my360button::enterEvent(QEvent *)
{
    m_enter=true;
    m_leave=false;
    m_enteranimation->start();
}
void my360button::leaveEvent(QEvent *)
{
    m_enter=false;
    m_leave=true;
    m_leaveanimation->start();
}
void my360button::paintEvent(QPaintEvent *)
{
    QPainter painter(this);
   if(m_enter)
    painter.drawPixmap(rect(),m_enterlist.at(m_enterIndex));
   if(m_leave)
    painter.drawPixmap(rect(),m_leavelist.at(m_leaveIndex));
}

三,demo下载:http://download.csdn.net/detail/what951006/9535965


powered by 小乌龟在大乌龟背上

更多文章:http://blog.csdn.net/what951006


3
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

qt 实例 一个界面例子

  • 2009-10-10 12:38
  • 35KB
  • 下载

Qt 主界面菜单栏和状态栏实现

Qt 主界面菜单栏和状态栏实现 因为之前一直用c#来着,最近项目需要跨平台 所以研究Qt发现上手也很快 学习QT学习到后面越发现Qt有些功能很强大 这里展示一个小demo,适合初学者高...
  • catemo
  • catemo
  • 2016-11-21 02:41
  • 2500

Qt/C++ 模仿 360安全卫士 10.2版本

本着分享的精神写这篇博文。看到帖吧说模仿360有奖的,不竟手痒~写个来玩玩,没打算去争、利用空闲时间,写了有四天时间吧。期间各种找图标资源啊!!有几个没找到~!现在觉得UI设计师才是最牛的!那么些丑陋...
  • what951006
  • what951006
  • 2016-06-04 18:30
  • 7069

仿360界面QT源码

  • 2017-07-05 21:02
  • 26.13MB
  • 下载

360界面QT实现

  • 2014-07-16 14:28
  • 6.00MB
  • 下载

QT5仿36011设置界面

一、简介         模仿360设置中心面板的功能:左侧导航使用QTreeWidget,右侧的显示区域使用QScrollArea控件;主要使用垂直滚动条的valueChanged事件和QTree...
  • ZuoYueXian
  • ZuoYueXian
  • 2017-04-19 16:57
  • 1139

Qt实现360安全卫士9.2(再度来袭) 内附实例源码

  • 2013-10-14 13:28
  • 26.13MB
  • 下载

QT5 仿360 11树形设置界面

  • 2017-04-19 17:02
  • 289KB
  • 下载

Qt模仿360系统托盘

可以看出来,360系统托盘分为4部分,最上面的是label和pushbutton,背景颜色时候绿色,下面的是toolbutton,紧接着下面是3个action,最后一行是3个pushbutton.模仿...
  • Ftworld21
  • Ftworld21
  • 2016-05-30 21:34
  • 531

Qt实现360安全卫士9.1源码

  • 2017-06-25 09:42
  • 89KB
  • 下载
    心得体会

     《程序员的心理疾病》
      1、概念不清
      2、大师崇拜
      3、各种乱七八糟的概念满天飞
      4、故步自封
      5、邪说盛行,歪道猖獗

     PS:个人随笔之文~如有差错,不吝赐教

    欢迎交流

    C/C++ Geek群: 366676369

    博主QQ:842420717

    个人资料
    • 访问:96848次
    • 积分:1862
    • 等级:
    • 排名:千里之外
    • 原创:83篇
    • 转载:0篇
    • 译文:0篇
    • 评论:151条
    博客专栏
    最新评论