#ifndef WIDGET_H
#define WIDGET_H
#include "registrwidget.h"
#include <QWidget>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QObject>
#include <QMessageBox>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlRecord>
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE
class Widget : public QWidget
{
Q_OBJECT
public:
Widget(QWidget *parent = nullptr);
~Widget();
signals:
void jumpToRegister();
public slots:
void loginBtn_slot();
void cancelBtn_slot();
void registerBtn_slot();
private:
Ui::Widget *ui;
QLabel*lab1 = new QLabel(this);
QLineEdit *edit1 = new QLineEdit(this);
QLineEdit *edit2 = new QLineEdit(this);
QLabel *lab2 = new QLabel(this);
QLabel *lab3 = new QLabel(this);
QPushButton *btn1 = new QPushButton("登录",this);
QPushButton *btn2 = new QPushButton("取消",this);
QPushButton *btn3 = new QPushButton("注册",this);
QSqlDatabase db;
registrwidget *reg_wid;
};
#endif // HQYJ_H
#ifndef REGISTRWIDGET_H
#define REGISTRWIDGET_H
#include <QWidget>
#include <QLabel>
#include <QLineEdit>
#include <QPushButton>
#include <QObject>
#include <QMessageBox>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <QSqlRecord>
namespace Ui {
class registrwidget;
}
class registrwidget : public QDialog
{
Q_OBJECT
public slots:
void jumpToRegister_slot();
public:
explicit registrwidget(QWidget *parent = nullptr);
~registrwidget();
void cancel_btn_clicked_slot();
void register_btn_clicked_slot();
private:
Ui::registrwidget *ui;
QPushButton *register_btn;
QPushButton *cancel_btn;
QLabel *lab1;
QLineEdit *edit1;
QLineEdit *edit2;
QLineEdit *edit3;
QLabel *lab2;
QLabel *lab3;
QLabel *lab4;
QSqlDatabase db;
};
#endif // REGISTRWIDGET_H
#include "widget.h"
#include "ui_widget.h"
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
reg_wid = new registrwidget;
if(!db.contains("registeredusr.db"))
{
db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("registeredusr.db");
}
if(!db.open())
{
QMessageBox::critical(this,"失败","打开失败");
return;
}
QString sql("create table if not exists regedusr("
"usrname varchar(20) primary key,"
"passwd varchar(20))");
QSqlQuery query;
if(!query.exec(sql))
{
QMessageBox::critical(this, "失败","创建失败");
return;
}
this->setWindowTitle("Widget");
this->setWindowIcon(QIcon("D:\\230906C++&Qt\\icon\\wodepeizhenshi.png"));
this->setFixedSize(QSize(400,300));
lab1->resize(QSize(400,133));
lab1->move(0,0);
lab1->setPixmap(QPixmap("D:\\230906C++&Qt\\icon\\logo.png"));
lab1->setScaledContents(true);
edit1->resize(QSize(240,40));
edit1->move(110,150);
edit1->setPlaceholderText("账号");
edit2->resize(QSize(240,40));
edit2->move(edit1->x(),edit1->y()+55);
edit2->setPlaceholderText("密码");
edit2->setEchoMode(QLineEdit::Password);
lab2->resize(50,40);
lab2->setPixmap(QPixmap("D:\\230906C++&Qt\\icon\\userName.jpg"));
lab2->setScaledContents(true);
lab2->move(edit1->x()-60,edit1->y());
lab3->resize(50,40);
lab3->setPixmap(QPixmap("D:\\230906C++&Qt\\icon\\passwd.jpg"));
lab3->setScaledContents(true);
lab3->move(edit2->x()-60,edit2->y());
btn1->resize(QSize(60,30));
btn2->resize(btn1->size());
btn1->move(120,edit2->y()+55);
btn2->move(btn1->x()+120,edit2->y()+55);
btn1->setIcon(QIcon("D:\\230906C++&Qt\\icon\\login.png"));
btn2->setIcon(QIcon("D:\\230906C++&Qt\\icon\\cancel.png"));
btn3->resize(btn1->size());
btn3->move(btn1->x()-100,btn1->y());
connect(btn1,&QPushButton::clicked,this,&Widget::loginBtn_slot);
connect(btn2,&QPushButton::clicked,this,&Widget::cancelBtn_slot);
connect(btn3,&QPushButton::clicked,this,&Widget::registerBtn_slot);
connect(this,&Widget::jumpToRegister,reg_wid,®istrwidget::jumpToRegister_slot);
}
Widget::~Widget()
{
delete ui;
}
void Widget::loginBtn_slot()
{
QString usrname = edit1->text();
QString passwd = edit2->text();
QString sql = QString("select passwd from regedusr where usrname = '%1';").arg(usrname);
QSqlQuery query;
if(!query.exec(sql))
{
QMessageBox::critical(this,"失败","登录失败");
return;
}
if(!query.next())
{
QMessageBox::critical(this,"失败","用户名不存在,请先登录");
edit2->clear();
return;
}else{
if(passwd == query.value(0).toString())
{
QMessageBox box(QMessageBox::Information,
"登录成功",
"登录成功",
QMessageBox::Ok,
this);
box.exec();
}else
{
QMessageBox box(QMessageBox::Critical,
"错误",
"账号密码不匹配,是否重新登录",
QMessageBox::Ok|QMessageBox::Cancel,
this);
box.setDefaultButton(QMessageBox::Ok);
int ret = box.exec();
if(QMessageBox::Ok==ret)
{
edit2->clear();
}else{
this->close();
}
}
}
}
void Widget::cancelBtn_slot()
{
int ret = QMessageBox::question(this,
"请问",
"是否确认要退出",
QMessageBox::Yes|QMessageBox::No,
QMessageBox::No);
switch(ret)
{
case QMessageBox::Yes:
this->close();
break;
case QMessageBox::No:
break;
default:
break;
}
}
void Widget::registerBtn_slot()
{
emit jumpToRegister();
}