一:实现思路

Qt绘制抽奖界面

使用一个定时器来实现滚动显示

使用鼠标事件(使得小程序框能够被拖动)

二:项目演示

抽奖小程序

二:源代码

widget.h:

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include<QMessageBox>
#include<QPaintEvent>
#include<QPainter>
#include<QDebug>
#define TIMEOUT 20
#define TITLE_MOVE_HIGHT 200
namespace Ui {
class Widget;
}class Widget : public QWidget
{Q_OBJECTpublic:explicit Widget(QWidget *parent = 0);void paintEvent(QPaintEvent *e);void timerEvent(QTimerEvent *e);void mouseMoveEvent(QMouseEvent *e);void mousePressEvent(QMouseEvent *e);void mouseReleaseEvent(QMouseEvent *e);~Widget();private slots:void on_BStartButton_clicked();void on_CloseButton_clicked();private:bool m_dragging;//判断鼠标是否正在被按下QPoint m_startPosition;QPoint m_framePosition;private:Ui::Widget *ui;QPixmap m_pix;//背景图bool m_bDrawing;//判断是否正在抽奖int m_MyTimeId;QStringList m_listNum;//用来存放中奖者名单int m_Curpos;
};#endif // WIDGET_H

widget.cpp:

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);ui->listWidget->setStyleSheet("background:gray");//不显示标题栏(无边框处理)this->setWindowFlags(Qt::Window | Qt::FramelessWindowHint);setWindowIcon(QIcon("D:\\linux\\pic\\5.jpg"));ui->BStartButton->setIcon(QIcon("D:\\linux\\pic\\22.png"));ui->BStartButton->setIconSize(QSize(100,100));ui->CloseButton->setStyleSheet("QPushButton{border-image:url(D:/linux/pic/31x.jpg);}""QPushButton:hover{border-image:url(D:/linux/pic/32x.jpg);}""QPushButton:pressed{border-image:url(D:/linux/pic/33x.jpg);}");m_pix.load("D:/linux/pic/25.jpg");m_bDrawing=false;m_Curpos=0;m_listNum.push_back("88元立减金");m_listNum.push_back("50元立减金");m_listNum.push_back("30元立减金");m_listNum.push_back("20元立减金");m_listNum.push_back("8.88立减金");m_listNum.push_back("6.66立减金");m_listNum.push_back("5元立减金");m_listNum.push_back("美团十元劵");m_listNum.push_back("美团5元劵");m_listNum.push_back("谢谢参与");
}void Widget::paintEvent(QPaintEvent *e)
{QPainter painter(this);QRect rc=rect();painter.drawPixmap(rc,m_pix);
}void Widget::timerEvent(QTimerEvent *e)
{if(m_MyTimeId==e->timerId()){m_Curpos++;if(m_listNum.size()-1 < m_Curpos){m_Curpos=0;}if(0==m_listNum.size())//没有成员时,关闭定时,停止抽奖{this->killTimer(m_MyTimeId);m_bDrawing=false;ui->BStartButton->setIcon(QIcon("D:\\linux\\pic\\51.jpg"));QMessageBox::information(this,"小老弟","奖抽完了,回家吧");return;}ui->Namelabel->setText(m_listNum.at(m_Curpos));}
}Widget::~Widget()
{delete ui;
}void Widget::on_BStartButton_clicked()
{if(m_bDrawing){m_bDrawing=false;ui->BStartButton->setIcon(QIcon("D:\\linux\\pic\\22.png"));this->killTimer(m_MyTimeId);if(m_listNum.size()>0){QString StrVal=m_listNum.at(m_Curpos);m_listNum.removeAt(m_Curpos);ui->listWidget->addItem(new QListWidgetItem(StrVal));}}else{m_bDrawing=true;ui->BStartButton->setIcon(QIcon("D:\\linux\\pic\\51.jpg"));m_MyTimeId=this->startTimer(TIMEOUT);}
}void Widget::on_CloseButton_clicked()
{if(QMessageBox::Yes==QMessageBox::question(this,"温馨提示","你确定要退出抽奖吗?",QMessageBox::Yes|QMessageBox::No)){this->close();}
}void Widget::mouseMoveEvent(QMouseEvent *e)
{if(e->buttons()==Qt::LeftButton){if(m_dragging){QPoint delta=e->globalPos()-m_startPosition;this->move(m_framePosition + delta);}}
}void Widget::mousePressEvent(QMouseEvent *e)
{if(e->button()==Qt::LeftButton){QRect rcTop=rect();rcTop.setBottom(rcTop.top()+TITLE_MOVE_HIGHT);if(rcTop.contains(e->pos())){m_dragging=true;m_startPosition=e->globalPos();m_framePosition=this->frameGeometry().topLeft();//原点qDebug()<<"[mousePressEcent]:m_startPosition:"<<m_startPosition<<endl;qDebug()<<"[mousePressEcent]:m_framePosition:"<<m_framePosition<<endl;}}
}void Widget::mouseReleaseEvent(QMouseEvent *e)
{m_dragging=false;
}

main.cpp

#include "widget.h"
#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

基于Qt的抽奖小程序相关推荐

  1. 用php制作中奖系统,基于PHP随机抽奖小程序,很简单!

    原标题:基于PHP随机抽奖小程序,很简单! 文章来自于:博客 网址:https://blog.csdn.net/shaolong1013/article/details/78763057 一个抽奖小程 ...

  2. 编写一个随机抽奖程序php,基于PHP实现简单的随机抽奖小程序

    摘要:一个抽奖小程序,概论可控,也可某个奖品在前端显示,而程序中根本不可能获得!把所有的概率x10后相加起来,新数组中每项的值等于它前几个的和加上它本身.然后随即生成一个0到最大数之间的一个数,通过循 ...

  3. 简单php抽奖,基于PHP实现简单的随机抽奖小程序_PHP

    一个抽奖小程序,概论可控,也可某个奖品在前端显示,而程序中根本不可能获得!把所有的概率x10后相加起来,新数组中每项的值等于它前几个的和加上它本身. 然后随即生成一个0到最大数之间的一个数,通过循环查 ...

  4. 随机循环抽奖小程序_c语言,基于JavaScript实现简单的随机抽奖小程序

    对于抽奖这样的小程序使用诸如VB,Delphi等工具来实现会比较的方便,由于本人机器上没有装这样的应用程序,所以只能另寻其道.为了使抽奖程序能够无需配置平台直接可以在任何一台机器上运行,开发工具和编译 ...

  5. Qt Creator创建基于Qt Widget的应用程序

    Qt Creator创建基于Qt Widget的应用程序 创建基于Qt Widget的应用程序 创建文本查找器项目 设计用户界 头文件 源文件 创建资源文件 编译并运行程序 创建基于Qt Widget ...

  6. python 抽奖库_用 python 写一个年会抽奖小程序

    使用 pyinstaller 打包工具常用参数指南 pyinstaller -F demo.py 参数 含义 -F 指定打包后只生成一个exe格式的文件 -D –onedir 创建一个目录,包含exe ...

  7. 基于PyQT5的翻译小程序(支持百度翻译和有道词典)

    基于PyQT5制作的翻译小程序 通过requests获取翻译结果,使用PyQT5设计界面,使用SystemHotkey设置全局快捷键 1. 实现基本翻译功能 2. 实现截图(支持快捷键F1启动)或拖入 ...

  8. 看看微博、微信、购物车、抽奖小程序是如何使用Redis数据结构进行实战演练的?

    大家都知道,现在只要是个系统就会有缓存的存在,而且几乎所有的系统都离不开Redis,可见Redis在现在系统的重要性. 所以,今天我们就来聊一下Redis,当然主要聊聊Redis在不同业务场景下的使用 ...

  9. Redis数据结构实战演练,看看微博、微信、购物车、抽奖小程序是如何使用的?

    大家都知道,现在只要是个系统就会有缓存的存在,而且几乎所有的系统都离不开Redis,可见Redis在现在系统的重要性. 所以,今天我们就来聊一下Redis,当然主要聊聊Redis在不同业务场景下的使用 ...

  10. 如何用excel制作xy曲线图_用Excel制作一个简易抽奖小程序,可一次抽取多人

    抽奖程序在很多场合都能派上用场,比如商场开业促销.课堂点名.抽取幸运观众等.我们今天就用Excel来制作一个简单的抽奖小程序,仅做参考. 抽奖小程序是下图这个样子的.我们按一下键盘上的F9键,即可完成 ...

最新文章

  1. mysql query cache优化
  2. php7.2 swoole_loader,用什么方法可以让swoolec-loader支持php7.3?
  3. 程序员必备的 10 大 GitHub 仓库
  4. Enumerable#zip特性
  5. 长见识:你真的知道C语言里extern quot;Cquot; 的作用吗?
  6. 记腾讯互娱网站布局(3)
  7. 如何实现listbox选项,然后双击鼠标实现选项的删除
  8. SpringMVC处理Json、文件上传、拦截器
  9. 项目名报错,但是项目里不显示错误的问题
  10. NOIP模拟题——tractor
  11. proxmoxve打造云桌面_[pve][vdi]用deskpool创建基于proxmoxVE的桌面云
  12. string的replaceAll()
  13. java8官网下载地址
  14. 广联达只有土建打不开_广联达BIM钢筋算量为什么打开工程是灰屏?工程打不开怎么办?...
  15. CSS设置背景颜色透明
  16. 《认知突围:做复杂时代的明白人》感想
  17. 自适应OCXO漂移校正算法(翻译)
  18. 苹果8wifi找不到服务器,iPhone8连不上wifi怎么办?苹果iPhone8无法连接网络的解决方法...
  19. 利用Linux的crontab实现定时执行python任务
  20. 微信开发-微信公共账号申请与接入(1)

热门文章

  1. 吴氏网解析——dips与极坐标系平面投影
  2. 获取高德地图POI数据
  3. 教之初考试系统登录选择服务器,教之初考试系统
  4. 计算机一级常用计算公式,全国计算机一级考试题库
  5. 如何使用pytorch下载MNIST数据集
  6. android 单位选择器,Android-PickerView
  7. 适合android手机 pdf阅读器,手机版pdf阅读器有哪些 这五款软件一定有适合你的
  8. gyp verb ensuring that file exists: C:\Python27\python.exe
  9. 【SEW-伺服电机-Profinet-io通讯控制——伺服配置】
  10. ArcView GIS 应用与开发技术(3)-地理要素的显示和标注