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 创建按钮动画的更多相关文章

  1. Unity 2D骨骼动画2:创建真实动画

    http://bbs.9ria.com/thread-401781-1-1.html 在这个系列,我们将关注Unity引擎提供的基于骨骼动画工具.它的主要思想是为了把它应用到你自己的游戏来介绍和教基本 ...

  2. 16款创建CSS3动画的jQuery插件

    jQuery插件是用来扩展jQuery原型对象的方法. 本文搜集了用来为你的站点创建CSS3动画的一些jQuery插件. 1. jQuery Smoove Smoove 简化了CSS3转换效果.使得页 ...

  3. Qt设置按钮为圆形

    通过Qt 的样式表实现圆形按钮,其也可以实现圆角按钮,当然也可以使用其他的方式,比如说,通过派生按钮类使用绘图事件,进行一个图形的绘制,或者是通过自定义一个类,通过信号与槽的机制与绘图事件的配合也能实 ...

  4. Unity中的动画系统和Timeline(2) 按钮动画和2D精灵动画

    按钮动画 1 创建按钮后,按钮的Button组件中,Transition我们平时用的时Tint,这次选择Animation 选择Auto Generate Animation,创建一个按钮动画 2 后 ...

  5. Linux下Qt创建共享库与链接共享库详解

    随着程序写的逐渐变多,或多或少的我们都会使用别人写好的库:或者我们不想让别人看到我们的一些核心程序,可以将核心程序封装成库.本次和大家分享的是在Ubuntu下使用Qt生成共享库以及在Qt中链接共享库的 ...

  6. jQuery Mobile 中创建按钮

    在 jQuery Mobile 中创建按钮 jQuery Mobile 中的按钮可通过三种方法创建: 使用 <button> 元素 使用 <input> 元素 使用 data- ...

  7. Web动画API教程1:创建基本动画

    本人转载自: Web动画API教程1:创建基本动画

  8. 5个基于css3超炫的鼠标滑动按钮动画

    今天给大家分享5个基于css3超炫的鼠标滑动按钮动画.这5个按钮鼠标经过的时候有超炫的动画效果.这5个按钮适用浏览器:360.FireFox.Chrome.Safari.Opera.傲游.搜狗.世界之 ...

  9. 8款超酷而实用的CSS3按钮动画

    1.CSS3分享按钮动画特效 这是一款基于CSS3的社会化分享按钮,按钮非常简单,提供了分享到twitter.facebook.youtube等大型社交网站.每一个分享按钮都有个大社交网站的Logo图 ...

随机推荐

  1. 想写个小说,关于C#的,名字就叫《原Csharp》吧 (第一回 买书未成炁自生 惶惶回屋遇老翁)

    以前也有写过一些小说,但是总是写写停停的,因为忙于项目和其他事情,总是耽搁很久(真的是很久)才会继续动两笔,所以我想先在这里以随笔的方式写个关于C#异世界的小故事吧,更新随缘,也稍微能让自己轻松些. ...

  2. 从 CPU 讲起,深入理解 Java 内存模型!

    Java 内存模型,许多人会错误地理解成 JVM 的内存模型.但实际上,这两者是完全不同的东西.Java 内存模型定义了 Java 语言如何与内存进行交互,具体地说是 Java 语言运行时的变量,如何 ...

  3. UiPath鼠标操作图像的介绍和使用

    一.鼠标(mouse)操作的介绍 模拟用户使用鼠标操作的一种行为,例如单击,双击,悬浮.根据作用对象的不同我们可以分为对元素的操作.对文本的操作和对图像的操作 二.鼠标对图像的操作在UiPath中的使 ...

  4. Linux的文件路径和访问文件相关命令

    Linux的绝对和相对路径 绝地路径 绝对路径:以根作为起来的路径 相对路径 相对路径:以当前位置作为起点 文件操作命令 显示当前工作目录: pwd命令 pwd:显示文件所在的路径 基名:basena ...

  5. python+requests+yaml实现接口自动化用例

    前言:最近也思考了一下怎么做接口自动化,以下内容属于自己目前阶段所学习到的内容,也逐渐投入自己实际工作中,把最近的学习新得跟大家分享下,话不多说,切入正题. 对接口自动化测试用例的思考:接口测试大多测 ...

  6. Node.js精进(7)——日志

    在 Node.js 中,提供了console模块,这是一个简单的调试控制台,其功能类似于浏览器提供的 JavaScript 控制台. 本系列所有的示例源码都已上传至Github,点击此处获取. 一.原 ...

  7. 基于UniApp社区论坛多端开发实战

    什么是移动端WebApp 移动端WebApp: 泛指手持设备移动端的web 特点: - 类App 应用,运行环境是浏览器 - 可以包一层壳,成为App - 常见的混合应用: ionic, Cordov ...

  8. UI自动化测试执行问题总结

    ------------恢复内容开始------------ ![image](https://img2022.cnblogs.com/blog/1510476/202206/1510476-2022 ...

  9. java-Stream的总结

    JAVA中的Stream 01.什么是Stream Stream是JDK8中引入,Stream是一个来自数据源的元素序列并支持聚合操作.可以让你以一种声明的方式处理数据,Stream 使用一种类似用 ...

  10. html + css 01: 3d立方体

    html + css实现3d立方体 css代码 /*页面背景色*/ body{ background-color: black; background-repeat:no-repeat; } /*** ...