Qt - 驾校科目-考试系统-布局题库1

Qt - 驾校科目-考试系统-布局题库1

目标
在这里插入图片描述
在这里插入图片描述
把这个文本放入到, 项目文件中
在这里插入图片描述
在这里插入图片描述

具体代码

在这里插入图片描述

#ifndef EXANDIALOG_H
#define EXANDIALOG_H
#include <QDialog>
#include <QTimer>
#include <QTextEdit>
#include <QLabel>
#include <QRadioButton>
#include <QCheckBox>
#include <QGridLayout>


class ExanDialog : public QDialog
{
    Q_OBJECT
public:
    ExanDialog(QWidget* parent = 0);
    void initTimer();    //初始化计时器
    void initLayout();   //初始化布局
    bool initTextEdit(); //
private:
    QTimer *m_timer; //计时器
    int m_timeGo;    //考试已用时

    QTextEdit *m_textEdit;         //考试题库显示
    QLabel *m_titleLabels[10];     //题目标签
    QRadioButton *m_raidoBtns[32]; //单选题按钮
    QCheckBox *m_checkBtns[4];     //多选题按钮
    QRadioButton *m_radioA;        //判断题A选项
    QRadioButton *m_radioB;        //判断题B选项
    QGridLayout *m_layout;         //布局管理器

private slots:
    void freshTime();
};

#endif // EXANDIALOG_H

在这里插入图片描述

#include "exandialog.h"
#include <QString>
#include <QFile>
#include <QTextStream>
#include <QMessageBox>
#include <QApplication>

ExanDialog::ExanDialog(QWidget* parent):QDialog(parent)
{
    setWindowTitle("考试已用时: 0分0秒");
    initTimer();
    initLayout();
    if (!initTextEdit())
    {
        QMessageBox::information(this, "提示", "初始化题库数据文件失败! ");
        QTimer::singleShot(0, qApp, SLOT(quit()));
    }
}

void ExanDialog::initTimer()
{
    this->m_timeGo = 0;
    this->m_timer = new QTimer(this);
    this->m_timer->setInterval(1000);
    this->m_timer->start();
    connect(m_timer, SIGNAL(timeout()), this, SLOT(freshTime()));
}

void ExanDialog::initLayout()
{
    this->m_layout =new QGridLayout(this);
    this->m_layout->setSpacing(10); //设置控件间的间距
    this->m_layout->setMargin(10);  //设置窗体与控件的间隔
}

bool ExanDialog::initTextEdit()
{
    QString strLine; //保存文件中读取到的一行数据
    QStringList strList; //保存读取到的答案行
    QString fileName("../exam.txt");
    QFile file(fileName);
    QTextStream stream(&file);

    if (file.open(QIODevice::ReadOnly | QIODevice::Text))
    {
        m_textEdit = new QTextEdit(this);
        QString strText; //用于保存显示到文本编辑器的数据
        int nLines = 0;
        while(!stream.atEnd())
        {
            strText += stream.readLine();
            strText += "\n";
            nLines++;
        }
        m_textEdit->setText(strText);
        return true;
    }else{
        return false;
    }
}

void ExanDialog::freshTime()
{
    m_timeGo++;
    QString min = QString::number(m_timeGo/60);
    QString sec = QString::number(m_timeGo%60);
    setWindowTitle("考试已用时: " + min + "分" + sec + "秒");
}

在这里插入图片描述

#include "logindialog.h"
#include <QApplication>
#include "exandialog.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
//    LoginDialog w;
//    w.show();
    ExanDialog w;
    w.show();

    return a.exec();
}

运行结果:
在这里插入图片描述

结语:

时间: 2020-07-20

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值