zoukankan      html  css  js  c++  java
  • 学习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人员名单放到程序同级目录下
    文件格式:一行一个姓名,多个姓名用换行符分割");
           
    } 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("
    ");
    }

    3.5 定时器

    主要使用到了QTimer,代码这里就不粘了

  • 相关阅读:
    从零开始学架构(三)UML建模
    【网址收藏】博客园主题美化
    完美解决国内访问GitHub速度太慢的难题
    SpringBoot+slf4j线程池全链路调用日志跟踪 二
    SpringBoot+slf4j实现全链路调用日志跟踪 一
    2021年java最全面试宝典【核心知识整理】
    [中级]系统集成项目管理工程师历年真题及参考答案
    线程池ThreadPoolExecutor最全实战案例
    大厂git分支管理规范:gitflow规范指南
    IdentityServer4
  • 原文地址:https://www.cnblogs.com/modou/p/14807990.html
Copyright © 2011-2022 走看看