学习qt,做了一个小应用:随机点名提问系统
最近在研究学习qt,qt是一个跨平台的基于C++的应用程序开发框架。
感觉这个qt开发起来还是非常简单的,封装了很多功能,开发效率还是非常高的。然后迫不及待的做了一个小案例,就实现了很简单的一个功能:随机点名提问功能。
1、qt下载
qt下载地址:https://download.qt.io/new_archive/
我下载的是qt5.6.3版本的,qt-opensource-windows-x86-mingw492-5.6.3.exe
这个版本已经内置了qt creator开发工具,不用额外下载qt creator
2、随机点名提问系统
系统界面效果:
源码已经上传到:https://gitee.com/modoucn/dianming
想直接使用这个工具的话,可以到这里下载,我是封装成一个exe,直接运行即可:https://gitee.com/modoucn/dianming/blob/master/bin/dianmingV1.zip
应用使用方法:需要先准备人员名单数据文件,将data.txt人员名单数据文件放到程序同级目录下,文件格式为一行一个姓名
3、涉及到的技术
3.1 窗体禁用最大化按钮和禁止调节窗口大小
setWindowFlags(windowFlags()& ~Qt::WindowMaximizeButtonHint); setFixedSize(this->width(), this->height());
3.2 消息对话框
#include <QMessageBox> ... QMessageBox::critical(this,"出错了","读取文件出错!");
3.3 生成随机数
生成10以内的随机数,生成范围0-9
#include <QTime> ... QTime time = QTime::currentTime(); qsrand(time.msec()+time.second()*1000); int num = qrand() % 10;
3.4 读取文本文件
#include <QFile> #include <QCoreApplication> #include <QTextCodec> #include <QMessageBox> ... // 获取程序当前运行目录 QString filePath = QCoreApplication::applicationDirPath(); QFile file(filePath + "/data.txt"); if(!file.exists()) { QMessageBox::critical(this,"出错了","请将data.txt人员名单放到程序同级目录下\n文件格式:一行一个姓名,多个姓名用换行符分割"); } else if(!file.open(QIODevice::ReadOnly | QIODevice::Text)) { QMessageBox::critical(this,"出错了","读取文件出错!"); } else { QByteArray bytes = file.readAll(); // 防止中文乱码 QTextCodec *codec = QTextCodec::codecForName("GBK"); QString content = codec->toUnicode(bytes); // 获取人员列表 QStringList list = content.split("\n"); }
3.5 定时器
主要使用到了QTimer,代码这里就不粘了