选题抓阄器

环境:win7

工具:QT5.4.0

界面:

使用方法:

一:先由每组选号(不重复)

二:课题名称和每个课题个数添加

三:点击开始完成抓阄

注:如果输入错误,可点击对应表格,删除即可;

如需多次抓阄,每次结束后复位即可。

可执行程序下载链接:课题抓阄工具

附:源代码

#ifndef INPUT_H
#define INPUT_H
#include #include #include #include #include #include #include #include #include #include #include class Input : public QWidget { Q_OBJECT public: explicit Input(QWidget *parent = 0); ~Input(); private: QLabel *ObjectLable;//课题名称 QLineEdit *ObjectLineEdit; QLabel *ObjectnumLabel;//课题个数 QSpinBox *ObjectnumSpinBox;//QSpinBox框 QPushButton *addBtn; //添加按钮 QPushButton *delBtn;//删除按钮 QPushButton *startBtn;//开始按钮 QPushButton *restartBtn;//复位按钮 QTableWidget *tablewidget;//表 QLabel *progressLabel; QProgressBar *progressbar;//进度条 signals: public slots: private slots: void startProgress();//开始动作 void restartProgress();//复位动作 void addProgress();//添加动作 void delProgress();//删除动作 }; #endif // INPUT_H #include "input.h" #include #include #include #include #include #include #include #include int namenumber=0; QStringList names; int a[50]={0}; Input::Input(QWidget *parent) : QWidget(parent) { QFont font("ZYSong18030",13);//设置字体 setFont(font); setWindowTitle(tr("课题抓阄器v1.0")); resize(550,300);//设置大小 tablewidget = new QTableWidget; tablewidget->setColumnCount(2);//设置表列数 QStringList headers; headers<<"课题名称"<<"选题序号"; tablewidget->setHorizontalHeaderLabels(headers); QGridLayout *LeftLayout = new QGridLayout(); LeftLayout->addWidget(tablewidget,0,1); ObjectLable = new QLabel(tr("课题名称:")); ObjectLineEdit = new QLineEdit; ObjectnumLabel = new QLabel(tr("课题个数:")); ObjectnumSpinBox = new QSpinBox; ObjectnumSpinBox->setRange(1,50);//设置QSpinBox数字范围 addBtn = new QPushButton(tr("添加")); delBtn = new QPushButton(tr("删除")); QGridLayout *RightLayout = new QGridLayout();//设置布局 RightLayout->addWidget(ObjectLable,0,0); RightLayout->addWidget(ObjectLineEdit,0,1); RightLayout->addWidget(ObjectnumLabel,1,0); RightLayout->addWidget(ObjectnumSpinBox,1,1); QHBoxLayout *BtnLayout = new QHBoxLayout; BtnLayout->addStretch(1); BtnLayout->addWidget(delBtn); BtnLayout->addWidget(addBtn); RightLayout->addLayout(BtnLayout,2,0,1,2); progressLabel = new QLabel(tr("抓阄进度:")); progressbar = new QProgressBar; startBtn = new QPushButton(tr("开始")); restartBtn = new QPushButton(tr("复位")); QHBoxLayout *startBtnLayout = new QHBoxLayout; startBtnLayout->addStretch(1); startBtnLayout->addWidget(restartBtn); startBtnLayout->addWidget(startBtn); RightLayout->addWidget(progressLabel,3,0); RightLayout->addWidget(progressbar,3,1,1,2); RightLayout->addLayout(startBtnLayout,4,0,1,2); QGridLayout *mainLayout = new QGridLayout(this); mainLayout->addLayout(LeftLayout,0,0); mainLayout->addLayout(RightLayout,0,1); connect(startBtn,SIGNAL(clicked()),this,SLOT(startProgress()));//信号连接 connect(restartBtn,SIGNAL(clicked()),this,SLOT(restartProgress())); connect(ObjectLineEdit,SIGNAL(returnPressed()),addBtn,SLOT(click())); connect(addBtn,SIGNAL(clicked()),this,SLOT(addProgress())); connect(delBtn,SIGNAL(clicked()),this,SLOT(delProgress())); tablewidget->setSelectionBehavior(QAbstractItemView::SelectRows); //设置选择行为,以行为单位 tablewidget->setSelectionMode(QAbstractItemView::SingleSelection);//设置选择模式,选择单行 } Input::~Input() { } void Input::startProgress() { int i,j; if(namenumber==0) { QMessageBox::warning(this,tr("警告"),tr("课题是空的")); } else{ progressbar->setRange(0,namenumber-1);//设置进度条 srand((unsigned)time(0));//按时间随机 for(i=0;i setValue(i); QString b = QString("%1").arg(a[i]); tablewidget->setItem(i,1,new QTableWidgetItem(b)); tablewidget->item(i,1)->setTextAlignment(Qt::AlignCenter);//单元格居中显示 Sleep(100); } } } void Input::restartProgress() { progressbar->reset();//进度条复位 int i,iLen; iLen = tablewidget->rowCount(); while(iLen>0)//表格复位 { tablewidget->removeRow(0); iLen = tablewidget->rowCount(); } names.clear();//字符列表复位 for(i=0;i<50;i++) a[i]=0; namenumber=0; ObjectLineEdit->clear();//文本框复位 ObjectnumSpinBox->setValue(1); } void Input::addProgress() { if(ObjectLineEdit->text().isEmpty()) { QMessageBox::warning(this,tr("警告"),tr("输入不能为空")); } else{ int num = ObjectnumSpinBox->text().toInt(); int i; QString name; for(i=0;i text(); names< setRowCount(namenumber+1);//表添加1行 tablewidget->setItem(namenumber,0,new QTableWidgetItem(name)); tablewidget->item(namenumber,0)->setTextAlignment(Qt::AlignCenter);//单元格居中显示 namenumber++; } } } void Input::delProgress() { int rowIndex = tablewidget->currentRow();//获取选中行号 if(rowIndex!=-1) { tablewidget->removeRow(rowIndex);//删除选中行号 names.removeAt(rowIndex); namenumber--; } } #include #include "input.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); Input w; w.show(); return a.exec(); } 

QT5:抓阄器的实现相关推荐

  1. QT5视频播放器制作

    这里使用QT自带的QMediaPlayer QMediaPlayer是对底层播放框架DirectShowPlayerService的封装,具体格式依赖播放框架,Windows上就是DirectShow ...

  2. QListView IconMode设置图标放大,整齐排列的处理方式

    最近将一个文件管理器的图标显示代码修改了一下,原先显示很混乱,现在看来好了很多,先来看看效果: 下载地址:Qt5文件管理器 这里主要讲一下怎么实现这个效果的: 如下代码,我们设置初始的GripSize ...

  3. Qt5.7 win10环境 调试器未设置问题解决

    环境:win10+Qt5.7 可以运行,但是调试时弹窗 "调试器未设置" 解决:需要下载 Debugging Tools for Windows . 1.先找到window10 s ...

  4. 基于 Qt5 ( C++ ) 开发的一个小巧精美的本地音乐播放器

    LightMusicPlayer --南京大学2019秋季学期 "高级程序设计" 课程设计三 基于Qt5开发的一个小巧精美的本地音乐播放器 代码注释详细,适合作为一个用于入门的Qt ...

  5. QT5简易音乐播放器的设计

    第一次写博客,分享一下最近用Qt5做的一个简单的音乐播放器. Qt版本:Qt 5.7.0 界面比较粗糙,但是音乐播放器的一些相关基本功能还是有的. 话不多说,先上个图. 闲着无聊加了个托盘图标功能,能 ...

  6. Qt5 QMediaPlayer 音乐播放器

    暑假用Qt写的音乐播放器,界面有点丑,然后功能也有点少,还有一些bug,然后现在趁着寒假的时间把之前的界面给改了一下,并添加 了一些功能,修改了一些bug,实现功能包括基本的歌曲播放暂停,上一首,下一 ...

  7. qt5 ffmpeg linux,C++实战ffmpeg和QT5跨平台视频播放器系列套餐

    课程目标: 课程内容已经更新,添加基础知识,解决卡顿和同步问题,并添加opengl shader播放yuv功能,发布XPlay2.0版本 .    这门课程给大家讲解的是基于当前流行FFMpeg视频处 ...

  8. Window 7下QT5.9.2安装、QTCreator调试器配置

    QT 5.9.2下载 QT在5.9版本及以上将不同的编译器的版本放在同一个文件qt-opensource-windows-x86-5.9.x.exe中,所以只需要此文件即可,链接:qt-opensou ...

  9. QT5知识:装饰器@pyqtSlot和槽和信号

    1.定义槽的格式 1 2 3 @PyQt5.QtCore.pyqtSlot(参数) def on_发送者对象名称_发射信号名称(self,参数):  pass 2.注意点,使用装饰器必须定义两个东西 ...

最新文章

  1. Apache Shiro 1.6.0 发布!修复绕过授权高危漏洞
  2. 转:http2.0时代即将到来~~~~~
  3. Pandas profiling 生成报告并部署的一站式解决方案
  4. 从物理服务器拷贝文件到容器,docker容器与物理机的文件传输—docker cp命令
  5. 微信支付—微信H5支付「PC端扫码支付」
  6. linux——回射服务器
  7. 【微型计算机原理与接口技术】计算机系统的基本组成
  8. .NET设计模式系列文章 [原]
  9. C#中的委托和Java中的“委托”(Java8 lambda表达式)
  10. 在春天,我用秋来诱惑你
  11. FLOPs和模型参数计算
  12. 京东数科“机房巡检机器人”高价值专利荣获专利大奖
  13. 如何面对科技性失业?
  14. 参考文献编号[9]之后出现空格解决方法
  15. 小扎爆料:当年为了结婚,差点让Facebook提前上市
  16. MIT6.828学习之Lab1
  17. 一个微信公众号sdk(封装的比较全面)
  18. Sqoop技术—安装及使用教程
  19. ios底部栏设计规范_IOS界面设计尺寸标准规范
  20. SkeyeVSS视频安防综合管理平台打造智慧楼宇“可视、可析、可控、可建、可管”安防体系

热门文章

  1. Linux 知识积累 - 关于shutdown
  2. 机器学习中精准度、召回率、准确率、F1 Score、G分数计算学习笔记
  3. 如何卸载NyanProgressBar插件
  4. FontFamily 看这里就够了
  5. 3. Python 数据容器(列表、元组、字符串、集合、字典)
  6. python数据容器分类
  7. 小学信息技术计算机的组成说课稿,小学信息技术全册说课稿大全.doc
  8. Qt QPushButton详解
  9. Linux常用端口总结
  10. 为什么要做接口测试? 怎么用Jmeter接口测试工具? 你都会了吗? 这里给大家全面介绍