目录

  • 一、效果展示:
    • 1、操作说明
  • 二、软件代码介绍
    • 1、工程目录
    • 2、核心代码之主类代码部分
    • 3、核心代码之线程类代码部分
  • 三、应用下载
    • 1、你若没时间研究代码,这里有打包好的应用

一、效果展示:

1、操作说明

下拉选择主题,点击开始按钮,开始滚动,再次点击停止,显示幸运之星及名称。中选人员不参与接下来的抽取,除非软件重启或点击复位按钮。

二、软件代码介绍

1、工程目录

2、核心代码之主类代码部分

main.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QCoreApplication>
#include <QDesktopWidget>
#include <QTimer>
#include <QPixmap>
#include <QSize>
#include "thread.h"
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACEclass MainWindow : public QMainWindow
{Q_OBJECTThread *thread;QTimer *timer;QTimer *timer2;public:MainWindow(QWidget *parent = nullptr);~MainWindow();private slots:void on_startBtn_clicked();void time2out();void show_image();void on_ResetBtn_clicked();void on_selectCase_activated(const QString &arg1);private:Ui::MainWindow *ui;void Init();void openTxtFile(QString name);void randomSelect();void clickStop();int g_val,index;bool start;QStringList strList_store0,strList;QImage *img;const QString txt_Dir = (QCoreApplication::applicationDirPath() + "/cfg/");QString pic_Dir = (QCoreApplication::applicationDirPath() + "/photo/");};
#endif // MAINWINDOW_H

main.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include "QFileDialog"
#include "QMessageBox"
#include <QDebug>
#include <qmath.h>
#include <QtMath>
#include <QRandomGenerator>
MainWindow::MainWindow(QWidget *parent): QMainWindow(parent), ui(new Ui::MainWindow)
{ui->setupUi(this);Init();thread = new Thread;timer2 = new QTimer(this);connect(timer2,SIGNAL(timeout()),this,SLOT(time2out()));
}
MainWindow::~MainWindow()
{delete ui;
}void MainWindow::Init(){int w = QApplication::desktop()->width();int h = QApplication::desktop()->height();this->setFixedSize(w,h);this->setWindowState(Qt::WindowMaximized);this->setWindowTitle("幸运之星");this->setObjectName("mainWindow");this->setStyleSheet("#mainWindow{border-image:url(:/background/bg.jpg);}");start = false;ui->caseName->setText("活动之主题");ui->caseName->setStyleSheet("font-size:60px;font-weight:500;color:yellow");ui->name->setStyleSheet("font-size:60px;font-weight:500;color:yellow");ui->startBtn->setStyleSheet("background:#f0f;");ui->ResetBtn->setStyleSheet("background:#f0f;");ui->selectCase->setStyleSheet("background:#f0f;");QDir dir(txt_Dir);QStringList nameFilters;nameFilters<<"*.txt";QStringList fileList = dir.entryList(nameFilters,QDir::Files|QDir::Readable,QDir::Name);//qDebug()<<"len:"<<fileList.length();for (int i=0;i<fileList.length();i++) {QFileInfo f = fileList.at(i);//qDebug()<<"文件名:"<<f.fileName();if(f.fileName()!=nullptr){openTxtFile(txt_Dir+f.fileName());}else{qDebug()<<"多个文件";}}
}
void MainWindow::openTxtFile(QString filename){QFile file(filename);//从文件目录读取json配置文件if(!file.open(QIODevice::ReadOnly)){QMessageBox::warning(this,"Error",QString::fromLocal8Bit("无法打开配置文件!"),QMessageBox::Close);return;}QList<QString> list;QString  l  = file.readAll();//qDebug()<<"内容:"<<l;strList_store0 = l.split("\r\n");strList = strList_store0;}
void MainWindow::on_startBtn_clicked()
{if(!start){ui->startBtn->setText("停止");start = true;timer2->start(50);thread->start();}else{ui->startBtn->setText("开始");start = false;clickStop();}
}
void MainWindow::randomSelect()
{int len;len= strList.length();if(len>1){show_image();}
}
void MainWindow::show_image()
{img=new QImage; //新建一个image对象QString path2;int len =  strList.length();index = rand()%len;path2 = pic_Dir+strList.at(index)+".png";qDebug()<<"path2:"<<path2;//增加优化代码如下:bool flg = img->load(path2); //将图像资源载入对象img,注意路径,可点进图片右键复制路径if(!flg){path2 = pic_Dir+strList.at(index)+".jpg";img->load(path2);}//若兼容其他格式可以继续判断img->load()的返回值。ui->image->setScaledContents(true);img->scaled(ui->image->size(),Qt::KeepAspectRatio);//Qt::SmoothTransformationui->image->setPixmap(QPixmap::fromImage(*img));//val =  qrand()%(len);qDebug()<<"val:"<<index;ui->name->setText(strList.at(index));delete img;
}
//出结果
void MainWindow::clickStop()
{thread->terminate();timer2->stop();strList.removeAt(index);int list_Len = strList.length();if(list_Len<2){qDebug()<<"val:"<<index;QMessageBox::warning(this,"Error",("请复位后再操作!"),QMessageBox::Close);}
}
//滚动
void MainWindow::time2out(){randomSelect();
}void MainWindow::on_ResetBtn_clicked()
{strList = strList_store0;}void MainWindow::on_selectCase_activated(const QString &arg1)
{ui->caseName->setText(arg1);}

3、核心代码之线程类代码部分

class Thread : public QThread
{Q_OBJECT
public:explicit Thread(QObject *parent = 0);void run();
signals:void show_image();
public slots:
};
void Thread::run()
{while(true){emit show_image();usleep(100000);}}

三、应用下载

1、你若没时间研究代码,这里有打包好的应用

打包好的exe应用链接

1、优化操作:增加对jpg和png格式的兼容

 //增加优化代码如下:bool flg = img->load(path2); //将图像资源载入对象img,注意路径,可点进图片右键复制路径if(!flg){path2 = pic_Dir+strList.at(index)+".jpg";img->load(path2);}//若兼容其他格式可以继续判断img->load()的返回值。
![在这里插入图片描述](https://img-blog.csdnimg.cn/0dd958f6e92b49fba17af6ac7ba59650.png)

2、优化操作:设置了对图片大小显示的限制,防止图片剪裁尺寸带来的显示问题。

QT实现年会抽奖小软件的实现相关推荐

  1. 自制wpf年会抽奖小软件

    今年公司年会,领导要我做一个小的抽奖软件,给了一组号码,要求每次抽奖抽的众多号码中的一个随机数,并且抽奖之后该号码不会参与下次抽奖. 前端代码: <Window x:Class="Wp ...

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

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

  3. python 年会抽奖小程序

    python 年会抽奖小程序 import random name = ["a","b","c","d","e ...

  4. Qt随机选人--年会抽奖小程序

    一款基于Qt GUI的随机选人小程序.按动右边小把手,出现按下弹回动效,然后滚动,随机选人. 唯一的缺点:滚动不够平滑. 核心源码: //random_selector.h#ifndef RANDOM ...

  5. Qt实现的一些小软件

    仿山外调试软件 基于Qt的数据管理小工具 多媒体播放器

  6. python 公司年会抽奖_用Python做个年会抽奖小程序吧

    又到了每年一度的年会,最期盼的可能就是抽奖环节了.如果大家都吐槽抽奖不公,那不如用程序来抽吧. 实现思路 在屏幕上不断滚动名字,然后点击停止后停止滚动.名单是保存在excel中,所以需要从excel解 ...

  7. python抽奖简单小程序游戏_python——(分别用两种方式实现)公司年会抽奖小程序...

    张三科技有限公司有300名员工,开年会抽奖,奖项如下 一等奖3名 : 泰国五日游 二等奖6名 :iphone手机 三等奖30名 :避孕套一盒 规则: 1.一共抽3次,第一次抽3等奖,第二次抽2等奖,第 ...

  8. python抽奖简单小程序游戏_用Python做个年会抽奖小程序吧

    又到了每年一度的年会,最期盼的可能就是抽奖环节了.如果大家都吐槽抽奖不公,那不如用程序来抽吧. 实现思路 在屏幕上不断滚动名字,然后点击停止后停止滚动.名单是保存在excel中,所以需要从excel解 ...

  9. python 抽奖 配音乐_用Python做个年会抽奖小程序吧

    又到了每年一度的年会,最期盼的可能就是抽奖环节了.如果大家都吐槽抽奖不公,那不如用程序来抽吧. 实现思路 在屏幕上不断滚动名字,然后点击停止后停止滚动.名单是保存在excel中,所以需要从excel解 ...

  10. 年会抽奖程序准备好了吗?没有的话,直接来取!

    大家好,我是TJ 关注TJ君,回复"武功秘籍"免费获取计算机宝典书籍 到年底了是不是要开年会了? 年会上大家最期待的项目是什么? 相信不少小伙伴最最期待的肯定是抽奖啦~ 不过抽奖呢 ...

最新文章

  1. 你的组织为自动化测试做好准备了吗?
  2. element怎么设置复选框属性_【JavaScript 教程】DOM——属性的操作
  3. 2015最火十大Android开源项目,是个程序员你就该看看!
  4. 《Linux Shell脚本攻略》读书笔记第五章 一网情深
  5. java mvc模式_Java MVC模式
  6. 2021年春招Elasticsearch面试题
  7. 三个世界及其有关概念
  8. Vue第三部分(1):Vue脚手架构建过程详细介绍和案例
  9. Deformable CNNs论文笔记
  10. 华为服务器gpu卡型号,gpu服务器与配置
  11. 数值分析(第五版) 第二章知识点总结
  12. EL表达式、 jstl标签
  13. LayaAir 2.0 开发 2048 小游戏
  14. 微服务2.0时代,论其痛点与触点
  15. 推荐20款每个人都会用到的办公软件
  16. 全能电子地图_安利一个胜过Google Earth的地图软件——全能电子地图下载器
  17. 三菱5uplc伺服电机指令_【工控无忧原创】三菱FX3U PLC如何控制松下伺服
  18. Excel小技巧总结,工作中超实用
  19. Skype for business 2015 综合部署系列七:配置 Skype 边缘传输服务器
  20. npm install 时报错:npm WARN vueproject@1.0.0 No repository field.(缺少repository字段)

热门文章

  1. [笔记]Windows核心编程《二十二》注入DLL和拦截API
  2. 数据分析与R语言视频教程
  3. R语言地理探测器--因子探测器实现
  4. 解决:Failed to create 'build\outputs\apk\watch-debug-unaligned.apks': 拒绝访问。
  5. 【洛谷OJ】传球游戏
  6. python解释器的下载与安装
  7. 2021年压力焊工作业考试题库
  8. java实现网络连接_Java 网络编程 | 菜鸟教程
  9. 我的网址收藏-更新日期(2014-09-04)
  10. 测试用例(功能用例)——人员管理、资产入库