当前位置:硬件测评 > QT实现年会抽奖小软件

QT实现年会抽奖小软件

  • 发布:2023-10-03 11:13

1.效果显示:

1。操作说明

下拉选择主题,点击开始按钮开始滚动,再次点击停止,会显示幸运星和名字。除非重新启动软件或点击重置按钮,否则被选中的人将不会参与后续抽奖。

2。软件代码介绍

1。项目目录

2。核心代码主类代码部分

main.h

#ifndefMAINWINDOW_H
#定义 MAINWINDOW_H#包括 
#包括 
#包括 
#包括 
#包括 
#包括 
#包括 "thread.h"
QT_BEGIN_NAMESPACE
命名空间 Ui {  主窗口 ; }
QT_END_NAMESPACE主窗口公共 QMainWindow{Q_OBJECTThread *线程;QTimer *定时器;Q定时器*定时器2;公共:主窗口(QWidget *= nullptr);~主窗口();私人插槽: void on_startBtn_clicked() ;void time2out();void 显示图像(); voidon_ResetBtn_clicked();void on_selectCase_activated(const QString & arg1);私人:Ui::主窗口 *ui;void 初始化();void openTxtFile(Q字符串名称);void  随机选择();void单击停止();int g_val ,索引;bool开始;QStringList strList_store0,strList;QImage *img;const QString txt_Dir = ( QCoreApplication::applicationDirPath() + "/cfg/");QString pic_Dir =  (QCoreApplication::applicationDirPath()+"/照片/") ;};#endif // MAINWINDOW_H

main.cpp

#包括 "mainwindow.h"
#包括 "ui_mainwindow.h"
#包括 "QFileDialog"
#包括 "QMessageBox"
#包括 
#包括 
#包括 
#包括 
主窗口::主窗口(QWidget *父级 ): QMainWindow(),ui(Ui::主窗口​​){ui->setupUi(这个); 初始化();线程= 线程;timer2  =  QTimer(这个);连接(定时器2,信号(超时()) ,这个,SLOT(time2out()) );
}
主窗口::~主窗口()
{删除ui;}void 主窗口::初始化(){intw= QApplication::桌面()->宽度() );int h = QApplication::桌面()->高度(); 这个->setFixedSize(w,h );这个->setWindowState (Qt::窗口最大化);这个- >setWindowTitle("幸运之星" );这个->setObjectName("主窗口") ;这个->setStyleSheet("#mainWindow{border-image:url(:/background/bg.jpg);}");开始=false;ui->caseName->setText( “活动之主题”);ui->caseName->setStyleSheet("字体大小:60px;字体-重量:500;颜色:黄色");ui->名称->setStyleSheet("字体大小:60px;字体粗细:500;颜色:y黄色");ui->startBtn->setStyleSheet ("背景:#f0f;") ;ui->ResetBtn->setStyleSheet() "背景:#f0f;");ui->selectCase->setStyleSheet("背景:#f0f;");QDir 目录(txt_Dir);QStringList nameFilters;nameFilters<<"*.txt";QStringList fileList = dir.entryList(nameFilters, QDir::文件|QDir ::可读,QDir::名称);//qDebug()<<"len:"<< fileList.length();for(inti=0; i<文件列表.长度();i++) {QFileInfo f = 文件列表.at(i);//qDebug()<<"文件名:"<如果(f.文件名()!=nullptr){openTxtFile(txt_Dir+f.文件名( ));}其他{qDebug()<<"多个文件";}}}
void 主窗口::openTxtFile(QString 文件名  ){Q文件文件(filename);//从文件目录中读取json配置文件if(! 文件.打开(QIODevice::只读)){QMessageBox ::警告(这个,“错误”,QString::来自Local8Bit("无法打开配置文件!” ), QMessageBox::关闭);返回;}Q列表<QString>列表;QString l =文件.全部读取();//qDebug()<< "内容: "<strList_store0 = l.分割("\r \n" );strList = strList_store0;}
void 主窗口::on_startBtn_clicked() {if(!开始){ui ->startBtn->setText ("停止");开始 =  true;timer2->开始(50);线程->开始(); }否则{ui->startBtn->setText("开始") ;开始= ;点击停止();}
}
void 主窗口::随机选择()
{intlen;len=strList .长度();if(len>1){show_image() ;}
}
void 主窗口::show_image(){img=QImage;//创建新的图像对象QString path2; int len = strList.长度(); 索引 = rand( )%len;path2 = pic_Dir+strList.at (索引)+".png";qDebug()<<“路径2:”<< path2;//添加优化代码如下:bool flg =  img ->加载( path2); //加载图片资源到对象img中,注意路径,可以右键图片复制路径if(!flg){路径2= pic_Dir+strList.(索引)+".jpg";img->加载(path2 );} //如果兼容其他格式,可以继续判断img->load()的返回值。 ui->图像->setScaledContents(true );img-> 缩放(ui->图像->尺寸() )Qt::KeepAspectRatio);//Qt::SmoothTransformationui->图像->setPixmap(QPixmap::来自图片(*img));//val = qrand()%(len);qDebug()<<” val:"<<索引;ui->名称-> setText(strList. (索引));删除图片;}
//结果
void 主窗口::clickStop()
{线程->终止();定时器2->停止() ;strList.删除(索引); int list_Len = strList.长度();if(list_Len<2){q调试( )<<"val:"<<索引;QMessageBox::警告(这个,"错误",("请重新恢复操作!"),Q消息框::关闭);}
}
//滚动void 主窗口::time2out(){ 随机选择();
}void主窗口::on_ResetBtn_clicked() )
{strList = strList_store0;}void  主窗口::on_selectCase_activated(常量 QString &arg1
{ui->案例名称->setText() arg1);}

3。核心代码的线程代码部分

线程公共Q线程
{Q_OBJECT
公共显式 线程(QObject *=0); 运行();
信号:voidshow_image();
公共插槽
};
螺纹::运行(){同时(true){发射show_image();睡觉(100000);}}

3。应用程序下载

1。如果你没有时间研究代码,这里有打包的应用程序

打包的exe应用程序链接

1。优化:增加对jpg、png格式的兼容性

负载路径2)? g) {path2 = pic_Dir+strList .(索引)+".jpg";img->加载(path2) );}//如果兼容其他格式可以继续确定img->load()的返回值。 ![在此插入图片描述](https: //www.sychzs.cn/0dd958f6e92b49fba17af6ac7ba59650.png)

2。优化操作:对图片尺寸显示进行限制,防止图片裁剪导致显示问题。

相关文章