基于Qt/C++/MySQL数据库实现简单的注册登录界面
前言:该小项目旨在为后续制作的小游戏提供简单的登录界面,简单使用了MySQL存储用户的账户信息,主要使用Qt Creator6.23平台开发。
·
前言:该小项目旨在为后续制作的小游戏提供简单的登录界面,简单使用了MySQL存储用户的账户信息,主要使用Qt Creator6.23平台开发。
新人拙作,欢迎前辈指点批评。
项目需求:
1.新建主窗口:
设计登录界面
2.连接数据库
添加SQL模块
3.Qt数据库操作
4.QSettings记录用户登录信息
5.新建子窗口
6.实现窗口切换
参考:
https://www.bilibili.com/video/BV1ov411u7mWp=2&vd_source=8b0cf08acbfe8e043d67d112075295b6
效果:
注册后MySQL数据库中会记用户账户信息
当查询到数据库有账户时才会登录成功(否则登录失败)
登录后跳转测试页面,测试页面点击会显示测试文本
文件目录:
源代码:
main.cpp文件(建立数据库):
#include "widget.h"
#include <QApplication>
#include <QSqlDatabase> //连接数据库
#include <QDebug>
#include <QSqlError>
int main(int argc, char *argv[]){
QApplication a(argc, argv);
//连接MySQL数据库:
QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL"); //创建Mysql数据库连接
db.setHostName("localhost"); //主机服务器
db.setPort(3306); //窗口
db.setUserName("root");
db.setPassword("123456"); //密码
db.setDatabaseName("mydb"); //数据库名
if(db.open())
{
qDebug()<<"数据库连接成功";
}else
{
qDebug()<<"数据库连接失败";
qDebug()<<db.lastError().text();//输出错误信息
}
Widget w;
w.show();
return a.exec();
}
widget.cpp文件:
#include "widget.h"
#include "ui_widget.h"
#include <QSqlQuery> //操作数据库
#include <QDebug> //输出错误信息
#include <QSqlError> //
#include <QMessageBox>
#include <QSettings> //读写配置文件
//#include <TestWidget3.h> //跳转窗口头文件
#include <mytestwidget.h> //跳转窗口头文件
Widget::Widget(QWidget *parent)
: QWidget(parent)
, ui(new Ui::Widget)
{
ui->setupUi(this);
//从配置文件中读取账号密码
QSettings setting("config.int",QSettings::IniFormat);
QString account = setting.value("section/account").toString();
QString password = setting.value("section/password").toString();
ui->accountEdit->setText(account);
ui->passwordedit->setText(password);
//用户注册向数据库插入数据
connect(ui->regButton,&QPushButton::clicked,this, [=](){ //为什么要箭头
//接收用户输入
QString account = ui->accountEdit->text(); //账号
QString password = ui->passwordedit->text(); //密码
//插入数据
QSqlQuery query;
QString qs = QString("insert into user(account,password) values('%1','%2')").arg(account).arg(password);
if(query.exec(qs)){ //如果插入数据成功
QMessageBox::information(this,"注册","注册成功");
}else{
QMessageBox::information(this,"注册","注册失败");
qDebug() <<query.lastError().text(); //输出错误信息
return;
}
});
//用户登录:查询数据
connect(ui->loginButton,&QPushButton::clicked , this ,[=](){
//接收用户输入
QString account = ui->accountEdit->text(); //账号
QString password = ui->passwordedit->text(); //密码
//查询数据:
QSqlQuery query; //操作数据库
QString qs = QString("select * from user where account = '%1' and password='%2'").arg(account).arg(password);
if(!query.exec(qs)){ //如果没有查到记录
qDebug() <<query.lastError().text(); //输出错误信息
return;
}
//获取查询的数据:
if(query.next()){ //获取到数据
QMessageBox::information(this,"登录","登录成功");
//跳转窗口
this->hide(); //隐藏主窗口
myTestWidget* mTW = new myTestWidget(); //创建新窗口
mTW->show(); //显示子窗口
//在配置文件中记录用户账号密码
if(ui->checkBox->isChecked()){ //选中
//创建配置文件
QSettings setting("config.int",QSettings::IniFormat); //配置文件在工程目录下
//把用户账号密码写到配置文件中
setting.beginGroup("section"); //节开始
setting.setValue("account",account);
setting.setValue("password",password);
setting.endGroup(); //结束
}
}else{
QMessageBox::information(this,"登录","登录失败");
}
});
}
Widget::~Widget()
{
delete ui;
}
myTestWidget.cpp文件:
#include "mytestwidget.h"
#include "ui_mytestwidget.h"
myTestWidget::myTestWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::myTestWidget)
{
ui->setupUi(this);
connect(ui->testButton,&QPushButton::clicked,this,[=](){
ui->textEdit->setText("牟天一\nMouTianYi");
});
}
myTestWidget::~myTestWidget()
{
delete ui;
}
更多推荐
已为社区贡献1条内容
所有评论(0)