登录窗口头文件
#ifndef LOGINUI_H
#define LOGINUI_H
#include <QWidget>
#include <QLineEdit>
#include <QPushButton>
#include <QLabel>
#include <QMessageBox>
#include <QSqlDatabase> //数据库管理类
#include <QSqlQuery> //执行sql语句的类
#include <QSqlRecord> //数据库记录类
#include <QKeyEvent>
#include "client.h"
class LoginUI : public QWidget
{
Q_OBJECT
private:
//标签类组件
QLabel* Background_Lab;
QLabel* Titile_Lab;
QLabel* Username_Lab;
QLabel* Password_Lab;
//按钮类组件
QPushButton* Close_Btn;
QPushButton* Hide_Btn;
QPushButton* Login_Btn;
QPushButton* Register_Btn;
//行编辑器类组件
QLineEdit* Username_Edit;
QLineEdit* Password_Edit;
//声明数据库对象
QSqlDatabase db;
//UI绘制函数
bool DrawLoginUI();
//构造函数
LoginUI();
bool construct();
private slots:
//槽函数
void On_CloseBtn_Clicked();
void On_Loginbtn_Slots();
void On_Registerbtn_Slots();
public:
//实例化对象
static LoginUI* NewInstance();
void show();
~LoginUI();
signals:
void jump();
};
#endif //LOGINUI_H
登录窗口函数实现
#include "LoginUI.h"
#include <QDebug>
bool LoginUI::DrawLoginUI()
{
bool ret = true;
//背景色设置
Background_Lab = new QLabel(this);
if( Background_Lab != nullptr)
{
Background_Lab->resize(538, 160);
Background_Lab->setStyleSheet("background-color:rgb(115,70,240)");
}
else
{
ret = false;
}
//窗口标识
Titile_Lab = new QLabel(this);
if( Titile_Lab != nullptr )
{
Titile_Lab->resize(90, 50);
Titile_Lab->setPixmap(QPixmap(":/QT_Icon/QQ_Icon.png"));
Titile_Lab->setScaledContents(true);
}
else
{
ret = false;
}
//关闭按键
Close_Btn = new QPushButton(this);
if( Close_Btn != nullptr )
{
Close_Btn->resize(20, 20);
Close_Btn->setIcon(QIcon(":/QT_Icon/close02.png"));
Close_Btn->move(508, 10);
connect(this->Close_Btn, &QPushButton::clicked, this, &LoginUI::On_CloseBtn_Clicked);
}
else
{
ret = false;
}
//隐藏按键
Hide_Btn = new QPushButton(this);
if( Hide_Btn != nullptr )
{
Hide_Btn->resize(20, 20);
Hide_Btn->setIcon(QIcon(":/QT_Icon/hide02.png"));
Hide_Btn->move(468, 10);
connect(this->Hide_Btn, &QPushButton::clicked, this, &LoginUI::hide);
}
else
{
ret = false;
}
//用户名输入栏
Username_Edit = new QLineEdit(this);
if( Username_Edit != nullptr )
{
Username_Edit->resize(260, 40);
Username_Edit->move(159, 173);
Username_Edit->setMaxLength(16);
Username_Edit->setPlaceholderText("QQ账号/手机号/邮箱");
}
else
{
ret = false;
}
//密码输入栏
Password_Edit = new QLineEdit(this);
if( Password_Edit != nullptr )
{
Password_Edit->resize(260, 40);
Password_Edit->move(Username_Edit->x(), Username_Edit->y()+60);
Password_Edit->setEchoMode(QLineEdit::Password);
Password_Edit->setMaxLength(16);
}
else
{
ret = false;
}
//用户名输入栏标签
Username_Lab = new QLabel(this);
if( Username_Lab != nullptr )
{
Username_Lab->resize(30, 30);
Username_Lab->move(Username_Edit->x()-40, Username_Edit->y()+5);
Username_Lab->setPixmap(QPixmap(":/QT_Icon/windos_icon1.png"));
Username_Lab->setScaledContents(true);
}
else
{
ret = false;
}
//密码输入栏标签
Password_Lab = new QLabel(this);
if( Password_Lab != nullptr )
{
Password_Lab->resize(30, 30);
Password_Lab->move(Password_Edit->x()-40, Password_Edit->y()+5);
Password_Lab->setPixmap(QPixmap(":/QT_Icon/password.png"));
Password_Lab->setScaledContents(true);
}
else
{
ret = false;
}
//登录按键
Login_Btn = new QPushButton("登录",this);
if( Login_Btn != nullptr )
{
Login_Btn->resize(130, 40);
Login_Btn->setStyleSheet("background-color:rgb(8,189,253);");
Login_Btn->move(Password_Lab->x(), Password_Lab->y()+60);
connect(this->Login_Btn, &QPushButton::clicked, this, &LoginUI::On_Loginbtn_Slots);
}
else
{
ret = false;
}
//注册按键
Register_Btn = new QPushButton("注册",this);
if( Register_Btn != nullptr )
{
Register_Btn->resize(130, 40);
Register_Btn->setStyleSheet("background-color:rgb(8,189,253);");
Register_Btn->move(Login_Btn->x()+170, Login_Btn->y());
connect(this->Register_Btn, &QPushButton::clicked, this, &LoginUI::On_Registerbtn_Slots);
}
else
{
ret = false;
}
return ret;
}
LoginUI::LoginUI(): QWidget(nullptr, Qt::WindowCloseButtonHint)
{
}
void LoginUI::show()
{
setWindowFlag(Qt::FramelessWindowHint);
setFixedSize(538, 373);
QWidget::show();
}
LoginUI::~LoginUI()
{
}
//构造函数
bool LoginUI::construct()
{
//UI界面绘制
bool ret = true;
ret = DrawLoginUI();
//数据库创建
//判断自己的数据库对象中,是否包含要处理的数据库,没有则添加一个数据库
if( !db.contains("UserMsg.db"))
{
//添加一个数据库,调用该类中的静态成员函数addDatabase()
db = QSqlDatabase::addDatabase("QSQLITE");//使用sqlite3数据库
//设置数据库名字
db.setDatabaseName("UserMsg.db");
}
//此时数据库已经创建完成
//打开数据库
if( !db.open() )
{
QMessageBox::information(this, "提示", "数据库打开失败");
ret = false;
}
//使用sql语句进行创建表的操作
//准备sql语句
QString Create_Table_Sql = "create table if not exists user_msg("
"user_name varchar(16) primary key,"
"password varchar(16))";
//准备语句执行者
QSqlQuery querry;
//执行sql语句
if( !querry.exec(Create_Table_Sql) )
{
QMessageBox::information(this, "提示", "创建表失败");
ret = false;
}
return ret;
}
//关闭按键槽函数
void LoginUI::On_CloseBtn_Clicked()
{
QMessageBox box(QMessageBox::Question, "关闭", "您确定要退出?", QMessageBox::Yes | QMessageBox::No, this);
box.setDefaultButton(QMessageBox::No);
int ret = box.exec();
if(ret == QMessageBox::Yes)
{
this->close();
}
else if(ret == QMessageBox::No)
{
}
}
//登录按键槽函数
void LoginUI::On_Loginbtn_Slots()
{
//获取ui界面的用户信息
QString name = Username_Edit->text();
QString password = Password_Edit->text();
if( name.isEmpty() )
{
QMessageBox::information(this, "提示", "请输入用户名");
return;
}
else if( password.isEmpty() )
{
QMessageBox::information(this, "提示", "请输入密码");
return;
}
//准备sql查询语句
QString sql = QString("select * from user_msg where user_name = '%1' and password = '%2'").arg(name).arg(password);
//准备语句执行者
QSqlQuery querry;
querry.exec(sql);
// qDebug() <<querry.exec(sql);
// qDebug() << querry.value(0);
// qDebug() << querry.value(1);
//执行sql语句
if( !querry.next() )
{
QMessageBox::information(this, "提示", "账号密码错误");
return;
}
else
{
QMessageBox::information(this, "提示", "登陆成功");
emit jump();
this->close();
}
}
//注册事件槽函数
void LoginUI::On_Registerbtn_Slots()
{
//获取ui界面的用户信息
QString name = Username_Edit->text();
QString password = Password_Edit->text();
//确保用户信息输入完整
if( name.isEmpty() || password.isEmpty() )
{
QMessageBox::information(this, "提示", "请将信息填写完整");
return;
}
//准备sql语句
QString sql = QString("insert into user_msg(user_name, password) "
"values('%1', '%2')").arg(name).arg(password);
//准备语句执行者
QSqlQuery querry;
if( !querry.exec(sql) )
{
QMessageBox::information(this, "提示", "注册失败");
return;
}
else
{
QMessageBox::information(this, "提示", "注册成功");
}
}
//创建一个新对象
LoginUI *LoginUI::NewInstance()
{
LoginUI* ret = new LoginUI;
if( !ret->construct() || ret == nullptr )
{
delete ret;
ret = nullptr;
}
return ret;
}
文章来源地址https://uudwc.com/A/xGpgq
文章来源:https://uudwc.com/A/xGpgq