用QT做一个单机版答题系统(数据库MySql)

您所在的位置:网站首页 制作一个标准的答题卡用软件可以吗 用QT做一个单机版答题系统(数据库MySql)

用QT做一个单机版答题系统(数据库MySql)

2024-07-13 07:51| 来源: 网络整理| 查看: 265

在用QT做一个答题系统之前,先实现单机版的从数据库读题的功能。 以下是我在上一篇的基础上加入连接数据库并读题的代码及最后实现的界面。 首先在pro里加入sql

QT += core gui sql

在数据库中建表的时候 需要题号,题目,选项A,B,C,正确答案选项 于是在头文件中建了6个表来存放:

#ifndef WIDGET_H #define WIDGET_H #include #include #include #include #include #include #include namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT public: explicit Widget(QWidget *parent = 0); ~Widget(); void timerEvent(QTimerEvent *event); void paintEvent(QPaintEvent *event); private slots: void on_pushButton_2_clicked(); void on_pushButton_clicked(); void on_pushButton_3_clicked(); void showDatabaseDataSlot(); void on_pushButton_4_clicked(); void on_pushButton_5_clicked(); private: Ui::Widget *ui; QSqlDatabase db; QList listN; //题目序号 QList list1; //题目 QList listA; //选项A QList listB; //选项B QList listC; //选项C QList listD; //正确选项 int timerId; int score; int currentQ; bool stop; }; #endif // WIDGET_H

在主函数中加入stop标志位让选择完一题以后不能重选的功能以及设置背景的功能(提前把图片放进去)

#include "widget.h" #include "ui_widget.h" #include #include #include #include #include #include #include #include #include Widget::Widget(QWidget *parent) : QWidget(parent), ui(new Ui::Widget) { ui->setupUi(this); showDatabaseDataSlot(); stop = false; //标志位 score = 0; //原始分数 currentQ = 0; //题目序号 ui->lcdNumber->display(10); //初始时间10s timerId = startTimer(500); //间隔1s } Widget::~Widget() { delete ui; } void Widget::timerEvent(QTimerEvent *event) { ui->lcdNumber->display(ui->lcdNumber->value() - 1); //显示-1 if(ui->lcdNumber->value() == 0) { if (currentQ == 4 ) { QMessageBox::information(this, "", QString("答题结束, 得分: %1").arg(score)); killTimer(timerId); return; } ui->lcdNumber->display(10); ++currentQ; ui->textEdit->setText(list1.at(currentQ)); ui->pushButton->setText(listA.at(currentQ)); ui->pushButton_2->setText(listB.at(currentQ)); ui->pushButton_3->setText(listC.at(currentQ)); ui->pushButton->setEnabled(true); ui->pushButton_2->setEnabled(true); ui->pushButton_3->setEnabled(true); stop = false; } } void Widget::on_pushButton_clicked() { if (stop) return; if(listD.at(currentQ) == 'A') score += 20; stop = true; ui->pushButton->setEnabled(false); } void Widget::on_pushButton_2_clicked() { if (stop) return; if(listD.at(currentQ) == 'B') score += 20; stop = true; ui->pushButton_2->setEnabled(false); } void Widget::on_pushButton_3_clicked() { if (stop) return; if(listD.at(currentQ) == 'C') score += 20; stop = true; ui->pushButton_3->setEnabled(false); } void Widget::showDatabaseDataSlot() { this->db = QSqlDatabase::addDatabase("QMYSQL"); //打开数据库 this->db.setHostName("localhost"); this->db.setUserName("root"); this->db.setPassword("960221"); this->db.setDatabaseName("mydb"); bool ok = db.open(); if(ok) { qDebug()


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3