看了一去二三里的文章,在写的,有减速效果,可控代码我注释了,要更具自己机器性能来定,但是加上文字后转速严重降低了很多,所有自开始和结束后显示了文字,希望大神指点在有文字的界面下怎样提高转速。
#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QPainter>
#include <QRadialGradient>
#include <QRectF>
#include <QPainterPath>
#include <QFont>
#include <QPushButton>
#include <QTimer>
#include <QLabel>

class Widget : public QWidget
{
Q_OBJECT

public:
Widget(QWidget *parent = 0);
~Widget();
void paintEvent(QPaintEvent *event);

private slots:
void stoporstart(void);
void mytimeout(void);
void mytimeout1(void);

private:

bool ok = false;
bool retard = false;
bool stop = true;
int angle = 0; //角度
int i = 0;
int settime[20] ={1,2,4,6,9,13,19,25,32,40,50,68,90,120,160,210,300,500,800,1200};
QRadialGradient *p_RadialGradient; //渐变
QList<int> rgb; //颜色
QRectF *rect;
QPointF points[4]; //中间的多边形
QPushButton *p_pushbutton;
QTimer *p_timer;
QTimer *p_timer1;
QLabel *p_label;
};

#endif // WIDGET_H

#include "widget.h"
#include <QDebug>

Widget::Widget(QWidget *parent)
: QWidget(parent)
{
setWindowTitle("小小柯洁");
setFixedSize(400,400);
p_RadialGradient = new QRadialGradient(0,0,150);
p_RadialGradient->setColorAt(0,Qt::white);
rect = new QRectF(-150,-150,300,300);

/*-------------------设置颜色-----------------*/
rgb<<255<<255<<0
<<106<<25<<23
<<0<<255<<255
<<0<<255<<0
<<0<<0<<255
<<230<<58<<137
<<255<<0<<255
<<255<<0<<0;

points[0] = QPoint(-11,3);
points[1] = QPoint(0,-80);
points[2] = QPoint(11,3);
points[3] = QPoint(0,20);

p_pushbutton = new QPushButton("开始",this);
p_pushbutton->setGeometry(140,20,60,20);
connect(p_pushbutton,SIGNAL(clicked(bool)),this,SLOT(stoporstart()));
p_label = new QLabel("点击抽奖",this);
p_label->setGeometry(205,20,80,20);

p_timer = new QTimer(this);
connect(p_timer,SIGNAL(timeout()),this,SLOT(mytimeout()));
p_timer1 = new QTimer(this);
connect(p_timer1,SIGNAL(timeout()),this,SLOT(mytimeout1()));
}

Widget::~Widget()
{

}

void Widget::paintEvent(QPaintEvent *event)
{
QPainter p_painter(this);
p_painter.setRenderHint(QPainter::Antialiasing);
p_painter.translate(200,200);
p_painter.setPen(Qt::NoPen);

for(int i=0; i<8; i++){
p_RadialGradient->setColorAt(1.0,QColor(rgb.at(i*3),rgb.at(i*3+1),rgb.at(i*3+2)));
p_painter.setBrush(*p_RadialGradient);
QPainterPath path;
path.arcTo(*rect,(angle+i*45),45);
p_painter.drawPath(path);
}
p_painter.setBrush(QBrush(QColor(255,0,0)));
p_painter.drawConvexPolygon(points,4);
p_painter.setBrush(QBrush(QColor(0,255,255)));
p_painter.drawEllipse(QRectF(-9,-9,18,18));

if(i==0||i==19) //字体影响帧率,只在开始和结束显示
{
p_painter.setPen(QColor(0,0,0));
p_painter.setFont(QFont("Microsoft YaHei",9,75));
p_painter.rotate(-angle);
p_painter.rotate(-22);
p_painter.drawText(0,0," 谢谢参与");
p_painter.rotate(-45);
p_painter.drawText(0,0," 一等奖");
p_painter.rotate(-45);
p_painter.drawText(0,0," 谢谢参与");
p_painter.rotate(-45);
p_painter.drawText(0,0," 谢谢参与");
p_painter.rotate(-45);
p_painter.drawText(0,0," 二等奖");
p_painter.rotate(-45);
p_painter.drawText(0,0," 谢谢参与");
p_painter.rotate(-45);
p_painter.drawText(0,0," 三等奖");
p_painter.rotate(-45);
p_painter.drawText(0,0," 谢谢参与");
}

}

void Widget::stoporstart()
{
if(ok)
{
ok = false;
p_pushbutton->setText("开始");
p_timer1->start(1000);
}
else
{
ok = true;
p_timer->start(0);
p_label->setText("等待结果....");
p_pushbutton->setText("停止");
}
}

void Widget::mytimeout()
{
angle=(angle+1)%360;
repaint();
}

void Widget::mytimeout1()
{
// if(angle>270&&angle<315) //可控制中奖,根据机器性能自己测试
// {
// }
// else
{
if(i>19)
{
p_timer->stop();
p_timer1->stop();
i = 0;
if(angle>-1&&angle<45)p_label->setText("一等奖");
else if(angle>44&&angle<90)p_label->setText("谢谢参与");
else if(angle>89&&angle<135)p_label->setText("谢谢参与");
else if(angle>134&&angle<180)p_label->setText("三等奖");
else if(angle>179&&angle<225)p_label->setText("谢谢参与");
else if(angle>224&&angle<270)p_label->setText("二等奖");
else if(angle>269&&angle<315)p_label->setText("谢谢参与");
else if(angle>314&&angle<360)p_label->setText("谢谢参与");
}
else
{
p_timer->start(settime[i]);
i++;
}
}
}

Qt抽奖圆盘(减速效果)相关推荐

  1. 3维DEMO: 抽奖圆盘

    抽奖圆盘 前些日子去超市,消费满一定钱数可以参加抽奖,就是在电视机上有个可旋转的圆盘,按一键开始,按一键抽奖结束.看到最大奖的扇形区域大约有个10度角的样子,按说中大奖的概率应该是36分之1.当然,这 ...

  2. Qt Creator创建自定义效果和材质

    Qt Creator创建自定义效果和材质 创建自定义效果和材质 创建自定义效果 创建自定义材料 创建着色器文件 创建自定义效果和材质 " Qt Quick 3D效果"和" ...

  3. Qt Creator应用3D效果

    Qt Creator应用3D效果 应用3D效果 可用效果 应用3D效果 Qt Design Studio提供了一组Qt Quick 3D效果,这些效果继承了Qt Quick 3D Effects模块中 ...

  4. 让View具有减速效果的动画——FlingAnimation

    Android动画和Transition系列文章 初识属性动画--使用Animator创建动画 再谈属性动画--介绍以及自定义Interpolator插值器 三谈属性动画--Keyframe以及Vie ...

  5. javascript实现div层移动的减速效果

    其实原理很简单,当一个div层从起始位置到最终终点位置(endX,endY)的过程中,假设每10ms移动一次.那么利用一个目标值(终点坐标)减去当前div层的位置除以一个定长来作为下次div层要移动的 ...

  6. Python+Qt抽奖点名工具源码窗体程序

     程序示例精选 Python+Qt抽奖点名工具源码窗体程序 如需安装运行环境或远程调试,见文章底部微信名片,由专业技术人员远程协助! 前言 这篇博客针对<Python+Qt抽奖点名工具源码窗体程 ...

  7. c语言程序设计樱花,Qt实现樱花飞舞效果

    本文实例为大家分享了Qt实现樱花飞舞效果的具体代码,供大家参考,具体内容如下 应女友要求,使用Qt做了一个在电脑桌面樱花飞舞的小程序.这里面用到了Qt动画效果QPropertyAnimation类来控 ...

  8. qt设计为磨砂玻璃效果_Pixyz的2020.1更新为数据准备带来了磨砂和光泽

    qt设计为磨砂玻璃效果 For their 2020.1 release, our partners at Pixyz have focused on improvements ranging fro ...

  9. Android自定义控件——模拟抛体加速减速效果

    这里主要介绍一个关于类竖直上抛运动规律效果的View,可以用于"加载中"过程动画. 效果 View中元素分析 单个圆点从左边界以一定初速度一定加速度进入,作减速运动,在运动区域中点 ...

  10. Qt / PyQt 简易毛玻璃效果

    目录 现有功能 运行结果 Qt / PyQt 源码下载 现有功能 用模糊功能实现简易的毛玻璃效果. 鼠标移动无边框窗口. 运行结果 Qt / PyQt 源码下载 GitHub - la-vie-est ...

最新文章

  1. 腾讯员工人均年薪84.7万,马化腾:员工心理健康最重要
  2. 2017年实时更新系统hosts文件(不能访问时才会更新)不要用于非法行为 只供内部测试...
  3. 在线即时通讯工具的网页即时聊天的html代码
  4. 以太网速率怎么手动设置_OPENWRT-KOOLSHARE软路由,一级/单臂/二级/旁软路由设置单臂路由联网教程...
  5. OP07高级电路图-摘自:Reza Moghim
  6. LOJ2195 旅行
  7. 《千只鹤》:面对爱,我们永远还行走在成长的路上 ...
  8. OpenCV的滤波与卷积
  9. 每天一个linux 命令 find命令
  10. 推导基姆拉尔森公式根据日期计算星期
  11. JS !(非运算)详解
  12. 到今天上了一个月班了,功能基本实现了.
  13. Django时区设置的郁闷
  14. PLC远程控制的方案
  15. 返回短语的缩写python_邮件缩写短语
  16. 汉得能效中台 || Choerodon猪齿鱼商业版V0.23正式上线!
  17. 学生信息管理系统(java)
  18. 小学计算机应用计划,小学生计算机教学计划
  19. iOS 重写UIButton
  20. 微软裁员新招:积极离职者奖诺基亚手机

热门文章

  1. C语言实现二维伊辛模型的蒙特卡罗方法模拟
  2. c语言if语句判断ab大小,C语言条件语句ifppt课件
  3. VIM 编辑器配置与使用
  4. linux 卸载jdk和安装 -凌晨的光
  5. LaTeX组件:texlive2019+texstudio+sumatraPDF 安装包及学习手册
  6. IE浏览器不能自动显示PDF文件的解决办法
  7. 用matlab还原全息图像,一种全息再现图像的零级像消除方法与流程
  8. java开发业务流程图,什么是业务流程图?业务流程图如何绘制?
  9. Redis安装教程(超详细)
  10. Cadence PSpice 基于代码生成仿真模型