QT5:抓阄器的实现
选题抓阄器
环境: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:抓阄器的实现相关推荐
- QT5视频播放器制作
这里使用QT自带的QMediaPlayer QMediaPlayer是对底层播放框架DirectShowPlayerService的封装,具体格式依赖播放框架,Windows上就是DirectShow ...
- QListView IconMode设置图标放大,整齐排列的处理方式
最近将一个文件管理器的图标显示代码修改了一下,原先显示很混乱,现在看来好了很多,先来看看效果: 下载地址:Qt5文件管理器 这里主要讲一下怎么实现这个效果的: 如下代码,我们设置初始的GripSize ...
- Qt5.7 win10环境 调试器未设置问题解决
环境:win10+Qt5.7 可以运行,但是调试时弹窗 "调试器未设置" 解决:需要下载 Debugging Tools for Windows . 1.先找到window10 s ...
- 基于 Qt5 ( C++ ) 开发的一个小巧精美的本地音乐播放器
LightMusicPlayer --南京大学2019秋季学期 "高级程序设计" 课程设计三 基于Qt5开发的一个小巧精美的本地音乐播放器 代码注释详细,适合作为一个用于入门的Qt ...
- QT5简易音乐播放器的设计
第一次写博客,分享一下最近用Qt5做的一个简单的音乐播放器. Qt版本:Qt 5.7.0 界面比较粗糙,但是音乐播放器的一些相关基本功能还是有的. 话不多说,先上个图. 闲着无聊加了个托盘图标功能,能 ...
- Qt5 QMediaPlayer 音乐播放器
暑假用Qt写的音乐播放器,界面有点丑,然后功能也有点少,还有一些bug,然后现在趁着寒假的时间把之前的界面给改了一下,并添加 了一些功能,修改了一些bug,实现功能包括基本的歌曲播放暂停,上一首,下一 ...
- qt5 ffmpeg linux,C++实战ffmpeg和QT5跨平台视频播放器系列套餐
课程目标: 课程内容已经更新,添加基础知识,解决卡顿和同步问题,并添加opengl shader播放yuv功能,发布XPlay2.0版本 . 这门课程给大家讲解的是基于当前流行FFMpeg视频处 ...
- Window 7下QT5.9.2安装、QTCreator调试器配置
QT 5.9.2下载 QT在5.9版本及以上将不同的编译器的版本放在同一个文件qt-opensource-windows-x86-5.9.x.exe中,所以只需要此文件即可,链接:qt-opensou ...
- QT5知识:装饰器@pyqtSlot和槽和信号
1.定义槽的格式 1 2 3 @PyQt5.QtCore.pyqtSlot(参数) def on_发送者对象名称_发射信号名称(self,参数): pass 2.注意点,使用装饰器必须定义两个东西 ...
最新文章
- Apache Shiro 1.6.0 发布!修复绕过授权高危漏洞
- 转:http2.0时代即将到来~~~~~
- Pandas profiling 生成报告并部署的一站式解决方案
- 从物理服务器拷贝文件到容器,docker容器与物理机的文件传输—docker cp命令
- 微信支付—微信H5支付「PC端扫码支付」
- linux——回射服务器
- 【微型计算机原理与接口技术】计算机系统的基本组成
- .NET设计模式系列文章 [原]
- C#中的委托和Java中的“委托”(Java8 lambda表达式)
- 在春天,我用秋来诱惑你
- FLOPs和模型参数计算
- 京东数科“机房巡检机器人”高价值专利荣获专利大奖
- 如何面对科技性失业?
- 参考文献编号[9]之后出现空格解决方法
- 小扎爆料:当年为了结婚,差点让Facebook提前上市
- MIT6.828学习之Lab1
- 一个微信公众号sdk(封装的比较全面)
- Sqoop技术—安装及使用教程
- ios底部栏设计规范_IOS界面设计尺寸标准规范
- SkeyeVSS视频安防综合管理平台打造智慧楼宇“可视、可析、可控、可建、可管”安防体系