Qt 创建按钮动画
1 封装自定义按钮 myPushBttton
2 构造函数 (默认图片,按下后显示图片)
3 测试开始按钮
4 开始制作特效
5 zoom1 向下弹跳
6 zoom2 向上弹跳
代码如下
main.h
#ifndef MAINMAIN_H
#define MAINMAIN_H #include <QMainWindow>
#include<QEvent> QT_BEGIN_NAMESPACE
namespace Ui { class MainMain; }
QT_END_NAMESPACE class MainMain : public QMainWindow
{
Q_OBJECT public:
MainMain(QWidget *parent = nullptr);
~MainMain();
protected:
void paintEvent(QPaintEvent *event); private:
Ui::MainMain *ui;
};
#endif // MAINMAIN_H
main.cpp
#include "mainmain.h"
#include "ui_mainmain.h"
#include<QIcon>
#include<QAction>
#include<QPainter>
#include"mypushbutton.h"
#include<QDebug> MainMain::MainMain(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainMain)
{
ui->setupUi(this); //设置场景大小
setFixedSize(320,588);
//设置标题
setWindowTitle("my text game");
//设置图标
setWindowIcon(QIcon(":/res/szan.png")); //退出
connect(ui->actionquit2,&QAction::triggered,[=](){
this->close();
}); myPushButton *myBtn = new myPushButton(":/res/szan.png");
myBtn->setParent(this);
myBtn->move(this->width()/2-myBtn->width()/2, this->height()*0.7);
connect(myBtn,&myPushButton::clicked,[=](){
qDebug()<<"mybtn clicked!!!";
myBtn->zoom1();
myBtn->zoom2();
}); } MainMain::~MainMain()
{
delete ui;
} //画家事件
void MainMain::paintEvent(QPaintEvent *event)
{
//定义一个画家
QPainter qpainter(this);
//定义一个pixmap
QPixmap pixmap;
//加载图片
pixmap.load(":/res/pjbj.png");
//把图片画上去 图片和屏幕一样大小
qpainter.drawPixmap(0,0,this->width(),this->height(),pixmap); //加载图标还是用pixmap
pixmap.load(":/res/szan.png");
pixmap = pixmap.scaled(pixmap.width()*0.5,pixmap.height()*0.5);
qpainter.drawPixmap(0,0,pixmap); }
自定义的 myPushButton.h
#ifndef MYPUSHBUTTON_H
#define MYPUSHBUTTON_H #include <QWidget>
#include<QPushButton> class myPushButton : public QPushButton
{
Q_OBJECT
public:
explicit myPushButton(QPushButton *parent = nullptr);
myPushButton(QString normalImg,QString pressImg=nullptr);
void zoom1();//向上跳
void zoom2();//向下跳 private:
QString normalImgPath;
QString pressImgPath; signals: }; #endif // MYPUSHBUTTON_H
自定义的 myPushButton.cpp
#include "mypushbutton.h"
#include<QDebug>
#include<QPropertyAnimation>
myPushButton::myPushButton(QPushButton *parent) : QPushButton(parent)
{
} myPushButton::myPushButton(QString normalImg,QString pressImg)
{
this->normalImgPath = normalImg;
this->pressImgPath = pressImg; QPixmap fix;
bool ret = fix.load(normalImg);
if(!ret){
qDebug()<<"图片加载失败!!!";
}
//设置图片固定大小
this->setFixedSize(fix.width(),fix.height());
// 设置不规则图片样式
this->setStyleSheet("QPushButton{border:Opx;}");
//设置图标
this->setIcon(fix);
//设置图标大小
this->setIconSize(QSize(fix.width(),fix.height() ));
}
//向上跳
void myPushButton::zoom1(){
//创建动态对象
QPropertyAnimation *animalton = new QPropertyAnimation(this,"geometry");
//设置间隔时间
animalton->setDuration(200);
//设置起始位置
animalton->setStartValue(QRect(this->x(),this->y(),this->width(),this->height()));
//设置结束位置
animalton->setEndValue(QRect(this->x(),this->y()+10,this->width(),this->height()));
//设置动画曲线
animalton->setEasingCurve(QEasingCurve::OutBounce);
//动起来
animalton->start(); }
//向下跳
void myPushButton::zoom2(){
//创建动态对象
QPropertyAnimation *animalton = new QPropertyAnimation(this,"geometry");
//设置间隔时间
animalton->setDuration(200);
//设置起始位置
animalton->setStartValue(QRect(this->x(),this->y()+10,this->width(),this->height()));
//设置结束位置
animalton->setEndValue(QRect(this->x(),this->y(),this->width(),this->height()));
//设置动画曲线+10
animalton->setEasingCurve(QEasingCurve::OutBounce);
//动起来
animalton->start();
}
Qt 创建按钮动画的更多相关文章
- Unity 2D骨骼动画2:创建真实动画
http://bbs.9ria.com/thread-401781-1-1.html 在这个系列,我们将关注Unity引擎提供的基于骨骼动画工具.它的主要思想是为了把它应用到你自己的游戏来介绍和教基本 ...
- 16款创建CSS3动画的jQuery插件
jQuery插件是用来扩展jQuery原型对象的方法. 本文搜集了用来为你的站点创建CSS3动画的一些jQuery插件. 1. jQuery Smoove Smoove 简化了CSS3转换效果.使得页 ...
- Qt设置按钮为圆形
通过Qt 的样式表实现圆形按钮,其也可以实现圆角按钮,当然也可以使用其他的方式,比如说,通过派生按钮类使用绘图事件,进行一个图形的绘制,或者是通过自定义一个类,通过信号与槽的机制与绘图事件的配合也能实 ...
- Unity中的动画系统和Timeline(2) 按钮动画和2D精灵动画
按钮动画 1 创建按钮后,按钮的Button组件中,Transition我们平时用的时Tint,这次选择Animation 选择Auto Generate Animation,创建一个按钮动画 2 后 ...
- Linux下Qt创建共享库与链接共享库详解
随着程序写的逐渐变多,或多或少的我们都会使用别人写好的库:或者我们不想让别人看到我们的一些核心程序,可以将核心程序封装成库.本次和大家分享的是在Ubuntu下使用Qt生成共享库以及在Qt中链接共享库的 ...
- jQuery Mobile 中创建按钮
在 jQuery Mobile 中创建按钮 jQuery Mobile 中的按钮可通过三种方法创建: 使用 <button> 元素 使用 <input> 元素 使用 data- ...
- Web动画API教程1:创建基本动画
本人转载自: Web动画API教程1:创建基本动画
- 5个基于css3超炫的鼠标滑动按钮动画
今天给大家分享5个基于css3超炫的鼠标滑动按钮动画.这5个按钮鼠标经过的时候有超炫的动画效果.这5个按钮适用浏览器:360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之 ...
- 8款超酷而实用的CSS3按钮动画
1.CSS3分享按钮动画特效 这是一款基于CSS3的社会化分享按钮,按钮非常简单,提供了分享到twitter.facebook.youtube等大型社交网站.每一个分享按钮都有个大社交网站的Logo图 ...
随机推荐
- [安洵杯 2019]easy_web-1
1.首先打开题目如下: 2.观察访问的地址信息,发现img信息应该是加密字符串,进行尝试解密,最终得到img名称:555.png,如下: 3.获得文件名称之后,应该想到此处会存在文件包含漏洞,因为传输 ...
- 分享一款IDEA主题,很奈斯
主题名称:Dark Purple Theme: 更换主题:在Setting中设置更换
- 攻防世界pwn题:Recho
0x00:查看文件信息 一个64位二进制文件,canary和PIE保护机制没开. 0x01:用IDA进行静态分析 分析:主程序部分是一个while循环,判断条件是read返回值大于0则循环.函数ato ...
- Lydon 分解与最小表示法
我们定义一个串是 \(\text{Lyndon}\) 串,当且仅当这个串的最小后缀就是这个串本身. 该命题等价于这个串是它的所有循环表示中字典序最小的. 引理 1:如果 \(u\) 和 \(v\) 都 ...
- HHL论文及代码理解(Generalizing A Person Retrieval Model Hetero- and Homogeneously ECCV 2018)
行人再识别Re-ID面临两个特殊的问题: 1)源数据集和目标数据集类别完全不同 2)相机造成的图片差异 因为一般来说传统的域适应问题源域和目标域的类别是相同的,相机之间的不匹配也是造成行人再识别数据集 ...
- SpringCloud微服务实战——搭建企业级开发框架(四十三):多租户可配置的电子邮件发送系统设计与实现
在日常生活中,邮件已经被聊天软件.短信等更便捷的信息传送方式代替.但在日常工作中,我们的重要的信息通知等非常有必要去归档追溯,那么邮件就是不可或缺的信息传送渠道.对于我们工作中经常用到的系统,里面 ...
- 通过jmeter压测surging
前言 surging是异构微服务引擎,提供了模块化RPC请求通道,引擎在RPC服务治理基础之上还提供了各种协议,并且还提供了stage组件,以便针对于网关的访问, 相对于功能,可能大家更想知道能承受多 ...
- jdbc 03:注册驱动的方式
jdbc连接mysql时,注册驱动的方式 package com.examples.jdbc.o3_注册驱动方式; //mysql驱动所在的包 import com.mysql.jdbc.Driver ...
- Python动态属性有什么用
Python 动态属性的概念可能会被面试问到,在项目当中也非常实用,但是在一般的编程教程中不会提到,可以进修一下. 先看一个简单的例子.创建一个 Student 类,我希望通过实例来获取每个学生的一些 ...
- 求广义表深度(严5.30)--------西工大noj
#include <stdio.h> #include <stdlib.h> #include <string.h> typedef enum{ATOM, LIST ...