学习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,代码这里就不粘了

posted @ 2021-05-25 11:29  魔豆  阅读(867)  评论(0编辑  收藏  举报