界面布局编写
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
this->resize(ui->label_img->width(),ui->label_img->height());
//图片自适应窗口大小
ui->label_img->setScaledContents(true);
//图片置于底层
ui->label_img->lower();
//固定大小
setFixedSize(this->width(),this->height());
this->setWindowTitle("驾校考试登入系统");
this->setWindowFlags(Qt::Dialog|Qt::WindowCloseButtonHint);
}
运行结果
邮箱地址验证(正则表达式)
void MainWindow::on_pushButton_login_clicked()
{
//正则验证邮箱地址 用户名@域名 808080@qq.com
//元字符解释:^ 表示规则字符串开始 $表示规则字符串结束
//+表示匹配次数>= 1 , *表示匹配任意次数(可为0次) {n,m}表示匹配次数至少n次,至多m次
QRegExp rx("^[A-Za-z0-9]+([_\.][A-Za-z0-9]+)*@([A-Za-z0-9\-]+\.)+[A-Za-z]{2,6}$");
bool res =rx.exactMatch(ui->lineEdit_account->text());
if(!res)
{
QMessageBox::information(this,"提示","邮箱地址非法,请你重新输入!");
}else
{
QMessageBox::information(this,"提示","欢迎登入科目一考试系统");
}
}
void MainWindow::on_pushButton_login_clicked()
{
//正则验证邮箱地址 用户名@域名 808080@qq.com
//元字符解释:^ 表示规则字符串开始 $表示规则字符串结束
//+表示匹配次数>= 1 , *表示匹配任意次数(可为0次) {n,m}表示匹配次数至少n次,至多m次
QRegExp rx("^[A-Za-z0-9]+([_\.][A-Za-z0-9]+)*@([A-Za-z0-9\-]+\.)+[A-Za-z]{2,6}$");
bool res =rx.exactMatch(ui->lineEdit_account->text());
if(!res)
{
QMessageBox::information(this,"提示","邮箱地址非法,请你重新输入!");
ui->lineEdit_account->clear();
ui->lineEdit_account->setFocus();
return ;
}else
{
// QMessageBox::information(this,"提示","欢迎登入科目一考试系统");
QString filename;
QString strAccInput;
QString strCode;
QString strLine;
QStringList strList; //链表
filename="D:\\documents\\ExamSystem\\account.txt";
strAccInput=ui->lineEdit_account->text();
strCode=ui->lineEdit_code->text();
QFile file(filename);
QTextStream stream(&file);
if(file.open(QIODevice::ReadOnly | QIODevice::Text))
{
while(!stream.atEnd()){
strLine=stream.readLine();
strList=strLine.split(",");//拆分成两半
if(strAccInput==strList.at(0))//账号匹配成功
{
if(strCode==strList.at(1))//密码匹配成功
{
QMessageBox::information(this,"提示","欢迎进入科目一考试系统!");
file.close();
return ;
}
else
{
QMessageBox::information(this,"提示","你输入的密码有误,请重新输入!");
ui->lineEdit_code->clear();
ui->lineEdit_code->setFocus();
file.close();
return ;
}
}
}
QMessageBox::information(this,"提示","你输入的账号有误,请重新输入!");
ui->lineEdit_account->clear();
ui->lineEdit_code->clear();
ui->lineEdit_account->setFocus();
file.close();
return ;
}else
{
QMessageBox::information(this,"提示","读取账号数据文件失败!");
return ;
}
}
}
设置密码不可见
设置考试计时器
#ifndef EXAMDIALOG_H
#define EXAMDIALOG_H
#include <QDialog>
#include<QTimer>
class ExamDialog : public QDialog
{
Q_OBJECT
public:
ExamDialog(QWidget* parent=0);
void initTimer();
private:
QTimer *m_timer; //计时器
int m_timeGo; //考试已用时
private slots:
void freshTime();
};
#endif // EXAMDIALOG_H
#include "examdialog.h"
#pragma execution_character_set("utf-8")
ExamDialog::ExamDialog(QWidget* parent):QDialog(parent)
{
setWindowTitle("考试已用时0分0秒");
initTimer();
}
void ExamDialog::initTimer()
{
m_timeGo=0;
m_timer=new QTimer(this);
m_timer->setInterval(1000);
m_timer->start();
connect(m_timer,SIGNAL(timeout()),this,SLOT(freshTime()));
}
void ExamDialog::freshTime()
{
m_timeGo++;
QString min=QString::number(m_timeGo/60);
QString sec=QString::number(m_timeGo%60);
setWindowTitle("考试已用时:"+min+"分"+sec+"秒");
}