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图 ...
随机推荐
- WinSCP和PuTTY的安装和使用
简介 WinSCP是一个Windows环境下使用SSH的开源图形化SFTP客户端.同时支持SCP协议.它的主要功能就是在本地与远程计算机间安全的复制文件. 安装 1.下载地址:https://www. ...
- label问题排查:打不开标注好的图像
问题描述 之前标注好的文件,标注有bbox和若干points.选择Open Dir打开图像目录,选择Change Output Dir选择json文件所在目录.发现有些图片能正常显示标注后的状态.而有 ...
- 漫谈客户端存储技术之Cookie篇
Cookie 说到Cookie,不管作为前端开发人员还是后端开发人员并不陌生,作为一种最古老.最稳定的客户端存储形式,即便是在当下各种新的客户端存储技术层出不穷的时代,它仍旧有其一席之位.Cookie ...
- HelloWord程序代码的编写和HelloWord程序的编译运行
1.新建文件夹,存放代码 2.新建一个Java文件 文件后缀名.java(Hello.java) 3.编写代码public class Hello{public static void main(St ...
- 【cartographer_ros】六: 发布和订阅路标landmark信息
上一节介绍了陀螺仪Imu传感数据的订阅和发布. 本节会介绍路标Landmark数据的发布和订阅.Landmark在cartographer中作为定位的修正补充,避免定位丢失. 这里着重解释一下Land ...
- Ubuntu修改网卡名
vim /etc/udev/rules.d/70-persistent-net.rules 添加以下内容: SUBSYSTEM=="net", ACTION=="add& ...
- 免费SSL证书申请及部署实践
网络上关于如何签发免费SSL证书的博文一大片,但是真正操作起来的能让新手不迷惑的却很少,很多操作步骤受限于国内无法访问外网的阻碍,导致无法真正实施成功. 实际上,关于申请免费SSL证书主要涉及两大部分 ...
- 4-3 Spring MVC框架-02
Spring MVC框架-02 Ⅰ.RESTful基础 是一种设计风格和开发方式 1.get和post请求区别: get post 获取请求 上传请求 请求参数在地址栏URL 请求参数在请求体里面 U ...
- VIM学习笔记-1
VIM vim主要分为3个模式: Normal 模式 Insert模式 command模式 Insert 模式就是普通的编辑模式,没有太多可以介绍的,vim的主要功能都在 Normal 模式和 Com ...
- Kafka入门实战教程(7):Kafka Streams
1 关于流处理 流处理平台(Streaming Systems)是处理无限数据集(Unbounded Dataset)的数据处理引擎,而流处理是与批处理(Batch Processing)相对应的.所 ...