{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
public slots:
void timeout();
private:
Ui::Widget *ui;
private slots:
void on_pushButton_clicked();
void on_pushButton_2_clicked();
void on_pushButton_3_clicked();
void on_pushButton_5_clicked();
void on_pushButton_4_clicked();
void on_pushButton_9_clicked();
void on_pushButton_6_clicked();
void on_pushButton_7_clicked();
void on_pushButton_8_clicked();
void on_pushButton_10_clicked();
void on_pushButton_11_clicked();
void on_pushButton_12_clicked();
void on_pushButton_14_clicked();
void on_pushButton_15_clicked();
void on_pushButton_16_clicked();
void on_pushButton_17_clicked();
void on_pushButton_18_clicked();
void on_pushButton_13_clicked();
void on_pushButton_19_clicked();
void on_pushButton_20_clicked();
void on_pushButton_21_clicked();
void on_pushButton_22_clicked();
void on_pushButton_23_clicked();
void on_pushButton_24_clicked();
void on_pushButton_25_clicked();
void on_pushButton_27_clicked();
void on_pushButton_31_clicked();
void test1();
void on_pushButton_49_clicked();
void on_pushButton_50_clicked();
void on_pushButton_29_clicked();
void test2();
void test3();
void test4();
void test5();
void on_pushButton_26_clicked();
void on_pushButton_28_clicked();
void on_pushButton_30_clicked();
};
#endif // WIDGET_H
Файл widget.cpp
#include "widget.h"
#include "ui_widget.h"
#include "db.h"
#include <QtSql>
#include <QDebug>
#include <QMessageBox>
QSqlTableModel *Users;
QSqlTableModel *questions;
QTimer *timer;
int id;
int time;
int time1;
int flag=-1;
int count1=0,count2=0,count3=0;
QString str="";
QString str1="";
QString zvanie;
int r=1;
int b=0;
int m=0;
int s=0;
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
connectDB();
ui->lineEdit_2->setEchoMode(QLineEdit::Password);
ui->pushButton_23->setHidden(1);
ui->pushButton_24->setHidden(1);
QGraphicsScene *scene = new QGraphicsScene;
scene->addPixmap(QPixmap("D:/kross1/images/111.JPG"));
ui->graphicsView_2->setScene(scene);
Users = new QSqlTableModel;
Users->setTable("Users");
Users->select();
questions = new QSqlTableModel;
questions->setTable("questions");
questions->select();
ui->tableView->setModel(Users);
ui->tableView->setHidden(1);
ui->tableView_2->setModel(Users);
ui->tableView_3->setModel(Users);
ui->tableView_3->setColumnHidden(2,1);
ui->tableView_3->setColumnHidden(3,1);
ui->tableView_3->setColumnHidden(4,1);
ui->tableView_3->setColumnHidden(5,1);
ui->comboBox->addItem("Кроссворд по основным темам 1");
ui->comboBox->addItem("Кроссворд на тему 'Windows'");
ui->comboBox->addItem("Кроссворд на тему 'Вирусы и антивирусные средства'");
ui->comboBox->addItem("Кроссворд на тему 'Интерфейс операционной системы Windows'");
ui->comboBox->addItem("Кроссворд по основным темам 2");
}
Widget::~Widget()
{
delete ui;
}
void Widget::on_pushButton_23_clicked()
{
QMessageBox::information(this, "Справка", "Автор программы: Ковалев Н. В.\nВерсия 1.0\nСГАСУ, ФИСТ");
}
void Widget::on_pushButton_clicked()
{
ui->pushButton_23->setHidden(0);
ui->pushButton_24->setHidden(0);
for (int i=0; i<Users->rowCount();i++)
{
if ( (ui->lineEdit->text()==Users->record(i).value(4).toString()) &&
(ui->lineEdit_2->text()==Users->record(i).value(5).toString()) )
{
flag=Users->record(i).value(3).toInt();
id=Users->record(i).value(0).toInt();
ui->label_12->setText("Здравствуйте, " + Users->record(i).value(4).toString() + "!");
ui->label_14->setText("Ваш текущий рейтинг: " + Users->record(i).value(6).toString() + ".");
break;
}
for(int i=0;i<Users->rowCount();i++)
{
if(Users->record(i).value(6).toInt()>Users->record(id+1).value(6).toInt())
{
//i1++;
r++;
}
}
m=0;b=0;s=-1;
for(int i=0;i<Users->rowCount();i++)
{
if((Users->record(i).value(6).toInt()<Users->record(id+1).value(6).toInt())&&(Users->record(i).value(3).toInt()==1))
{
m++;
}
if((Users->record(i).value(6).toInt()>Users->record(id+1).value(6).toInt())&&(Users->record(i).value(3).toInt()==1))
{
b++;
}
if((Users->record(i).value(6).toInt()==Users->record(id+1).value(6).toInt())&&(Users->record(i).value(3).toInt()==1))
{
s++;
}
}
str1="";
str1=str1.append("Количество игроков с таким же рейтингом: %1. \nКоличество игроков с рейтингом ниже %2 - %3. \nКоличество игроков с рейтингом выше %2 - %4.").arg(s).arg(Users->record(id+1).value(6).toInt()).arg(m).arg(b);
ui->label_61->setText(str1);
str = "";
str = str.append("Вы занимаете %1 место в таблице рейтинга!").arg(r);
ui->label_60->setText(str);
if(Users->record(id+1).value(6).toInt()<25){
ui->label_35->setText("Ваше звание: рекрут!");
QGraphicsScene *scene = new QGraphicsScene;
scene->addPixmap(QPixmap("D:/kross1/images/1.JPG"));
ui->graphicsView->setScene(scene);
}
if((Users->record(id+1).value(6).toInt()>24)&&(Users->record(id-1).value(6).toInt()<39))
{
QGraphicsScene *scene = new QGraphicsScene;
ui->label_35->setText("Ваше звание: сержант!");
scene->addPixmap(QPixmap("D:/kross1/images/2.JPG"));
ui->graphicsView->setScene(scene);
}
if((Users->record(id+1).value(6).toInt()>38)&&(Users->record(id-1).value(6).toInt()<42))
{
ui->label_35->setText("Ваше звание: офицер!");
QGraphicsScene *scene = new QGraphicsScene;
scene->addPixmap(QPixmap("D:/kross1/images/3.JPG"));
ui->graphicsView->setScene(scene);
}
if((Users->record(id+1).value(6).toInt()>41)&&(Users->record(id-1).value(6).toInt()<56))
{
ui->label_35->setText("Ваше звание: лейтенант!");
QGraphicsScene *scene = new QGraphicsScene;
scene->addPixmap(QPixmap("D:/kross1/images/4.JPG"));
ui->graphicsView->setScene(scene);
}
if((Users->record(id+1).value(6).toInt()>55)&&(Users->record(id-1).value(6).toInt()<87))
{
ui->label_35->setText("Ваше звание: мастер!");
QGraphicsScene *scene = new QGraphicsScene;
scene->addPixmap(QPixmap("D:/kross1/images/5.JPG"));
ui->graphicsView->setScene(scene);
}
if((Users->record(id+1).value(6).toInt()>86))
{
ui->label_35->setText("Ваше звание: генерал!");
QGraphicsScene *scene = new QGraphicsScene;
scene->addPixmap(QPixmap("D:/kross1/images/6.JPG"));
ui->graphicsView->setScene(scene);
}
}
if (flag==-1)
{
QMessageBox::warning(this, "Ошибка входа", "Вы ввели некорректный логин или пароль");
}
switch (flag){
case 0:
ui->stackedWidget->setCurrentIndex(3);
break;
case 1:
ui->stackedWidget->setCurrentIndex(4);
break;
case 2:
ui->stackedWidget->setCurrentIndex(2);
default:
break;
}
}
void Widget::on_pushButton_2_clicked()
{
ui->stackedWidget->setCurrentIndex(1);
}
void Widget::on_pushButton_5_clicked()
{
ui->stackedWidget->setCurrentIndex(0);
}
void Widget::on_pushButton_3_clicked()
{
QWidget::close();
QWidget::setAttribute(Qt::WA_DeleteOnClose, true);
}
void Widget::on_pushButton_24_clicked()
{
QWidget::close();
QWidget::setAttribute(Qt::WA_DeleteOnClose, true);
}
void Widget::on_pushButton_4_clicked()
{
Users->insertRow(Users->rowCount());
Users->setData(Users->index(Users->rowCount()-1,0),Users->rowCount());
Users->setData(Users->index(Users->rowCount()-1,1),ui->lineEdit_3->text());
Users->setData(Users->index(Users->rowCount()-1,2),ui->lineEdit_4->text().toInt());
Users->setData(Users->index(Users->rowCount()-1,3),1); //1 - школьники, 0 - учителя, 2 - администраторы
Users->setData(Users->index(Users->rowCount()-1,4),ui->lineEdit_5->text());
Users->setData(Users->index(Users->rowCount()-1,5),ui->lineEdit_6->text());
Users->setData(Users->index(Users->rowCount()-1,6),0);
Users->submitAll();
QMessageBox::warning(this, "Успех!", "Регистрация прошла успешно!");
}
void Widget::on_pushButton_9_clicked()
{
ui->stackedWidget->setCurrentIndex(0);
}
void Widget::on_pushButton_6_clicked()
{
Users->insertRow(Users->rowCount());
Users->setData(Users->index(Users->rowCount()-1,0),Users->rowCount());
Users->setData(Users->index(Users->rowCount()-1,6),0);
}
void Widget::on_pushButton_7_clicked()
{
Users->removeRow(ui->lineEdit_7->text().toInt()-1);
}
void Widget::on_pushButton_8_clicked()
{
Users->submitAll();
ui->tableView_2->setModel(Users);
}
void Widget::on_pushButton_10_clicked()
{
Users->setData(Users->index(ui->lineEdit_8->text().toInt()-1,6),0);
Users->submitAll();
ui->tableView_3->setModel(Users);
ui->tableView_3->setColumnHidden(2,1);
ui->tableView_3->setColumnHidden(3,1);
ui->tableView_3->setColumnHidden(4,1);
ui->tableView_3->setColumnHidden(5,1);
}
void Widget::on_pushButton_11_clicked()
{
for (int i=0; i<Users->rowCount();i++)
{
Users->setData(Users->index(i,6),0);
Users->submitAll();
ui->tableView_3->setModel(Users);
}
}
void Widget::on_pushButton_12_clicked()
{
ui->stackedWidget->setCurrentIndex(0);
}
void Widget::on_pushButton_14_clicked()
{
ui->stackedWidget->setCurrentIndex(0);
}
void Widget::on_pushButton_15_clicked()
{
ui->tableView_4->setModel(Users);
ui->tableView_4->setColumnHidden(0,1);
ui->tableView_4->setColumnHidden(3,1);
ui->tableView_4->setColumnHidden(4,1);
ui->tableView_4->setColumnHidden(5,1);
ui->stackedWidget->setCurrentIndex(5);
for (int i=0; i<Users->rowCount();i++)
{
if (Users->record(i).value(3).toInt()!=1){
ui->tableView_4->setRowHidden(i,1);
}
}
for(int i=0;i<Users->rowCount();i++)
{
if(Users->record(i).value(6).toInt()>Users->record(id-1).value(6).toInt())
{
//i1++;
r++;
}
}
str = "";
str = str.append("Вы занимаете %1 место в таблице рейтинга!").arg(r);
ui->label_60->setText(str);
ui->label_39->setText(str);
}
void Widget::on_pushButton_16_clicked()
{
ui->stackedWidget->setCurrentIndex(4);
ui->tableView_4->setModel(Users);
ui->tableView_4->setColumnHidden(0,1);
ui->tableView_4->setColumnHidden(3,1);
ui->tableView_4->setColumnHidden(4,1);
ui->tableView_4->setColumnHidden(5,1);
for (int i=0; i<Users->rowCount();i++)
{
if (Users->record(i).value(3).toInt()!=1){
ui->tableView_4->setRowHidden(i,1);
}
}
}
void Widget::on_pushButton_18_clicked()
{
ui->stackedWidget->setCurrentIndex(4);
}
void Widget::on_pushButton_20_clicked()
{
ui->stackedWidget->setCurrentIndex(4);
}
void Widget::on_pushButton_22_clicked()
{
ui->stackedWidget->setCurrentIndex(4);
}
void Widget::on_pushButton_50_clicked()
{
//ui->textBrowser_4->setText("");
ui->stackedWidget->setCurrentIndex(4);
}
void Widget::on_pushButton_13_clicked()
{
//QMessageBox::warning(this, "Недостаточно рейтинга!", "У вас недостаточно высокий рейтинг! Пройдите более простой тест.");
switch (ui->comboBox->currentIndex()){
case 0:
test1();
break;
case 1:
if(Users->record(id-1).value(6).toInt()<25){
QMessageBox::warning(this, "Слишком низкий ранг!", "У вас недостаточно высокий рейтинг! Пройдите более простое задание!");
}
else
{
test2();
}
break;
case 2:
if(Users->record(id-1).value(6).toInt()<39){
QMessageBox::warning(this, "Слишком низкий ранг!", "У вас недостаточно высокий рейтинг! Пройдите более простое задание!");
}
else
{
test3();
}
break;
case 3:
if(Users->record(id-1).value(6).toInt()<42){
QMessageBox::warning(this, "Слишком низкий ранг!", "У вас недостаточно высокий рейтинг! Пройдите более простое задание!");
}
else
{
test4();
}
break;
case 4:
if(Users->record(id-1).value(6).toInt()<56){
QMessageBox::warning(this, "Слишком низкий ранг!", "У вас недостаточно высокий рейтинг! Пройдите более простое задание!");
}
else
{
test5();
}
break;
default:
break;
}
}
void Widget::on_pushButton_17_clicked() //для первого теста
{
if(ui->lineEdit_9->text()==questions->record(0).value(2).toString())
{
count1++;
}
if(ui->lineEdit_10->text()==questions->record(1).value(2).toString())
{
count1++;
}
if(ui->lineEdit_11->text()==questions->record(2).value(2).toString())
{
count1++;
}
if(ui->lineEdit_12->text()==questions->record(3).value(2).toString())
{
count1++;
}
if(ui->lineEdit_13->text()==questions->record(4).value(2).toString())
{
count1++;
}
if(ui->lineEdit_14->text()==questions->record(5).value(2).toString())
{
count1++;
}
if(ui->lineEdit_15->text()==questions->record(6).value(2).toString())
{
count1++;
}
if(ui->lineEdit_16->text()==questions->record(7).value(2).toString())
{
count1++;
}
if(ui->lineEdit_17->text()==questions->record(8).value(2).toString())
{
count1++;
}
if(time1==0)
{
count1=count1/2;
}
ui->label_32->setHidden(1);
QMessageBox::information(this, "Тест пройден!", QString("Поздравляем! Тест пройден. Ваш рейтинг увеличился на %1 пунктов.").arg(count1));
Users->setData(Users->index(id-1,6),Users->record(id-1).value(6).toInt()+count1);
Users->submitAll();
if(Users->record(id-1).value(6).toInt()<10){
ui->label_35->setText("Ваше звание: новичок!");
}
if((Users->record(id-1).value(6).toInt()>9)&&(Users->record(id-1).value(6).toInt()<25))
{
ui->label_35->setText("Ваше звание: опытный!");
}
if(Users->record(id-1).value(6).toInt()>25)
{
ui->label_35->setText("Ваше звание: эксперт!");
}
count1=0;
time = 10;
time1 = time;
ui->label_14->setText("Ваш текущий рейтинг: " + Users->record(id-1).value(6).toString() + ".");
}
void Widget::on_pushButton_19_clicked() // для второго теста
{
if(ui->lineEdit_18->text()==questions->record(0+9).value(2).toString())
{
count1=count1+3;
}
if(ui->lineEdit_19->text()==questions->record(1+9).value(2).toString())
{
count1=count1+3;
}
if(ui->lineEdit_20->text()==questions->record(2+9).value(2).toString())
{
count1=count1+3;
}
if(ui->lineEdit_21->text()==questions->record(3+9).value(2).toString())
{
count1=count1+3;
}
if(ui->lineEdit_22->text()==questions->record(4+9).value(2).toString())
{
count1=count1+3;
}
if(ui->lineEdit_23->text()==questions->record(5+9).value(2).toString())
{
count1=count1+3;
}
if(ui->lineEdit_24->text()==questions->record(6+9).value(2).toString())
{
count1=count1+3;
}
if(time1==0)
{
count1=count1/2;
}
ui->label_38->setHidden(1);
QMessageBox::information(this, "Тест пройден!", QString("Поздравляем! Тест пройден. Ваш рейтинг увеличился на %1 пунктов.").arg(count1));
Users->setData(Users->index(id-1,6),Users->record(id-1).value(6).toInt()+count1);
Users->submitAll();
if(Users->record(id-1).value(6).toInt()<10){
ui->label_35->setText("Ваше звание: новичок!");
}
if((Users->record(id-1).value(6).toInt()>9)&&(Users->record(id-1).value(6).toInt()<25))
{
ui->label_35->setText("Ваше звание: опытный!");
}
if(Users->record(id-1).value(6).toInt()>25)
{
ui->label_35->setText("Ваше звание: эксперт!");
}
count1=0;
time = 10;
time1 = time;
ui->label_14->setText("Ваш текущий рейтинг: " + Users->record(id-1).value(6).toString() + ".");
}
void Widget::on_pushButton_21_clicked() // для третьего теста
{
if(ui->lineEdit_25->text()==questions->record(0+9+7).value(2).toString())
{
count1=count1+7;
}
if(ui->lineEdit_26->text()==questions->record(1+9+7).value(2).toString())
{
count1=count1+7;
}
if(ui->lineEdit_27->text()==questions->record(2+9+7).value(2).toString())
{
count1=count1+7;
}
if(ui->lineEdit_28->text()==questions->record(3+9+7).value(2).toString())
{
count1=count1+7;
}
if(ui->lineEdit_29->text()==questions->record(4+9+7).value(2).toString())
{
count1=count1+7;
}
if(time1==0)
{
count1=count1/2;
}
ui->label_46->setHidden(1);
QMessageBox::information(this, "Тест пройден!", QString("Поздравляем! Тест пройден. Ваш рейтинг увеличился на %1 пунктов.").arg(count1));
Users->setData(Users->index(id-1,6),Users->record(id-1).value(6).toInt()+count1);
Users->submitAll();
if(Users->record(id-1).value(6).toInt()<10){
ui->label_35->setText("Ваше звание: новичок!");