最近看了篇文章啊,讲的就是让小球进行移动,可能别人做的是仿真啊,用到了太多的数学函数,什么运动学,各种的,我就想着,自己能不能使用qt实现下这种效果,就是有一个球不停的移动,当碰到边框的时候就进行反方向移动。原理很简单,首先不停的重绘球体位置,其他就是计算的问题了。
直接看代码吧!
.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <qpainter.h>
#include <QTime>class Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();protected:void paintEvent(QPaintEvent *event);protected slots:void on_timer_timeout();private:QTimer *m_time;int m_X=10;int m_Y=10;bool m_bColl=false;bool m_bYcoll=false;
};
#endif // WIDGET_H

.cpp

#include "widget.h"
#include <QTimer>
#include <qdebug.h>Widget::Widget(QWidget *parent): QWidget(parent)
{this->resize(800,500);m_time=new QTimer(this);m_time->stop();m_time->setInterval (10) ;//设置定时周期,单位:毫秒m_time->start();connect(m_time,SIGNAL(timeout()),this,SLOT(on_timer_timeout()));}Widget::~Widget()
{}void Widget::paintEvent(QPaintEvent *event)
{QPainter paint(this);paint.setRenderHint(QPainter::Antialiasing, true);paint.setPen(QColor("red"));paint.setBrush(QBrush(QColor("green")));if(m_bColl==false){m_X=m_X+1;if(m_bYcoll==false){m_Y=m_Y+1;paint.drawEllipse(m_X,m_Y,50,50);}else{m_Y=m_Y-1;paint.drawEllipse(m_X,m_Y,50,50);}}else{m_X=m_X-1;if(m_bYcoll==false){m_Y=m_Y+1;paint.drawEllipse(m_X,m_Y,50,50);}else{m_Y=m_Y-1;paint.drawEllipse(m_X,m_Y,50,50);}}}void Widget::on_timer_timeout()
{if(m_X+50>=this->width()){m_bColl=true;  //反方向走}if(m_X<=0){m_bColl=false;}if(m_Y+50>=this->height()){m_bYcoll=true;}if(m_Y<=0){m_bYcoll=false;}update();
}

效果图:

qt实现类似windows的屏幕保护(小球碰撞动画)相关推荐

  1. 更改Windows 登录屏幕保护程序

    概要 本分步指南介绍如何更改默认的登录屏幕保护程序. 启动 Windows 时,会出现一个开始登录对话框,提示您按 CTRL+ALT+DEL 组合键登录. 默认情况下,如果在 15 分钟内未按任何键, ...

  2. windows xp 屏幕保护程序_小礼物:3D Windows XP 屏幕保护程序

    航通社旗下公众号"56K小猫"(微信:modem56k),原创文章未经授权禁止转载.航通社微信:lifeissohappy 微博:@航通社 生 / 活 / 小 / 妙 / 招 从昨 ...

  3. iOS实现浮动泡泡功能,悬浮泡泡,windows系统屏幕保护程序的气泡功能(碰撞检测)

    使用到的知识点有 1.block封装NSTimer 2.随机生成0-X之间的正数 3.两个frame是否有交集:CGRectIntersectsRect 4.随机生成-1~1之间的浮点数 5.CGPo ...

  4. Qt实现小球碰撞动画——屏保

    说明:本次设计应用Qt完成一个小动画,并且可以同用户进行交互,适合新手学习练手 功能描述:小球弹撞动画具有以下功能 1.小球可以沿着一个随机的方向运动 2.运动时可以加减速 3.随时切换小球形状(圆形 ...

  5. 【原创】小球碰撞动画

    闲时浏览网页,偶然看到这么个效果: 正好最近在研究css3动画,网页上一切动的事物都能引起我十二分的注意.于是理所当然的右键,查看代码,看看他是怎么实现的,结果呐,原来只是一张gif图片啊.但是这个以 ...

  6. 银河麒麟liunux下的屏幕保护与锁屏设置

    windows中有屏幕保护程序,在人离开的一段时间后可以开启屏幕保护,而且还可以设置密码,非常有利于短时间离开电脑时的保护隐私. 在linux中其实也有类似的功能,只不过一开始以为要安装termsav ...

  7. 如何将一个网页文件设置为屏幕保护程序

    将一个网页文件设置为电脑的屏幕保护程序 如何实现 1.自己写的网页文件或者是某个浏览器的URL,将其网页形式变成屏幕保护程序 2.用C#写一个WindowsForm程序,用WebBrowser控件实现 ...

  8. golang windows 设置桌面背景和屏幕保护

    设置桌面背景和屏幕保护 主要是修改注册表和使用windows api来生效配置,支持XP以上操作系统. 使用方法 参数说明: Usage of setbg.exe: -a 设置开启或关闭屏幕保护,默认 ...

  9. 让应用程序禁止Windows屏幕保护

    让应用程序禁止Windows屏幕保护 2000-03-21· 周新栋·计算机世界日报 如果在你的程序中需要一个很长的时间段来进行大量的数据处理,这段时间长得足以使Windows因检测不到用户动作而激活 ...

  10. 【已解决】Windows在设置屏幕保护程序显示灰色,更改不了

    屏幕保护程序中,出现灰色的一栏[此时无法设置等待时间和设置是否回到登陆界面的时候],用以下方法即可 一.用Win+R键打开注册表工具 二.运行框中输入 regedit 三.依次打开这些以下目录 HKE ...

最新文章

  1. 怎么复制链接伟html,index.html
  2. matlab 最小二乘法拟合_机器学习十大经典算法之最小二乘法
  3. passwd 修改用户密码
  4. 【软考-软件设计师】CPU的功能
  5. .net core i上 K8S(六).netcore程序的service网络代理模式
  6. 985硕博士:你为什么比我差?
  7. AJAX Toolkits -- DropShadow
  8. 别人的一句话影响了我好几年
  9. Inpaint for Mac(图片去水印软件)
  10. 800道Python习题,花了一个月终于整理出来了,挑战一下自己能做对多少题
  11. iphone转android通讯录,苹果IPHONE通讯录电话簿转到安卓手机csv,vcf方法(ITUNES,OUTLOOK,EXCEL)...
  12. 24第六季四小时首播进入倒计时!
  13. php粒子背景特效_12个精致炫酷的背景装饰特效库(分享)
  14. 中鑫优配热点前瞻:国防军工+数据安全+燃料电池+煤炭
  15. Oracle函数获取汉字的首字母
  16. 如何在论文中添加参考文献引用(以Word2016为例)
  17. 阿里云IoT2018年度十佳合作伙伴20强入围企业公布
  18. python将图像转化为灰度图像_使用numpy将图像转换为灰度
  19. 计算机英语讲课笔记09
  20. 赢在微点答案专区英语_高一 | 人教版高中化学教材必修1 思考与交流、学与问答案...

热门文章

  1. Luogu1541[NOIp2010 TG] 乌龟棋
  2. 网络基础知识(黑马教程笔记)-3-http协议(响应报文)
  3. dell驱动安装工具_DELL R720 安装WIN2008 R2
  4. python创建一个字典、其中值为1_从2个列表创建一个字典,其中一个作为键,另一个作为python中的值...
  5. python语言编写一个生成九宫格图片的代码_python生成九宫格图片
  6. 设备log导入oracle,oracle imp 导入数据库出错 请看log!
  7. java经常用到的英文_Java中用到的英文单词,你知道多少?
  8. python找到最大最小值、最大最小值的位置、删除最大值最小值
  9. oracle叶子节点函数,oracle tree计算叶子节点到根节点的乘积
  10. Redis单线程模型详解