最近在研究學習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,代碼這里就不粘了