基于Qt/C++/MySQL数据库实现简单的注册登录界面

        前言:该小项目旨在为后续制作的小游戏提供简单的登录界面,简单使用了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;
}

  • 5
    点赞
  • 49
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
以下是一个 QTMySQL 帮助类示例,用于连接 MySQL 数据库并执行一些常见的操作: ```cpp #include <QtSql/QSqlDatabase> #include <QtSql/QSqlQuery> #include <QtSql/QSqlError> #include <QDebug> class MySQLHelper { public: MySQLHelper(const QString& host, const QString& username, const QString& password, const QString& database) { // 连接 MySQL 数据库 db = QSqlDatabase::addDatabase("QMYSQL"); db.setHostName(host); db.setUserName(username); db.setPassword(password); db.setDatabaseName(database); if (!db.open()) { qDebug() << "无法连接到数据库: " << db.lastError().text(); } } ~MySQLHelper() { db.close(); } bool execute(const QString& sql) { QSqlQuery query(db); if (!query.exec(sql)) { qDebug() << "执行 SQL 出错: " << query.lastError().text(); return false; } return true; } QSqlQuery query(const QString& sql) { QSqlQuery query(db); if (!query.exec(sql)) { qDebug() << "执行 SQL 出错: " << query.lastError().text(); } return query; } private: QSqlDatabase db; }; ``` 在此示例中,我们创建了一个名为 `MySQLHelper` 的类,用于连接 MySQL 数据库并执行一些常见的操作。在构造函数中,我们使用 `QSqlDatabase` 类创建了一个 MySQL 数据库连接,然后在析构函数中关闭连接。 该类包含两个常见的操作:`execute` 和 `query`。`execute` 方法用于执行一个 SQL 语句,不需要返回结果;`query` 方法用于执行一个 SQL 查询,并返回一个 `QSqlQuery` 对象,该对象可以用于访问查询结果。 以下是一个使用示例: ```cpp MySQLHelper mysqlHelper("localhost", "root", "password", "test"); QString sql = "SELECT * FROM users WHERE age > 18"; QSqlQuery query = mysqlHelper.query(sql); while (query.next()) { QString name = query.value("name").toString(); int age = query.value("age").toInt(); qDebug() << "姓名:" << name << " 年龄:" << age; } ``` 在此示例中,我们创建了一个 `MySQLHelper` 对象,并使用 `query` 方法执行了一个 SQL 查询。然后,我们使用 `while` 循环遍历查询结果,并使用 `value` 方法获取每个字段的值。最后,使用 `qDebug()` 函数输出结果。 需要注意的是,此示例仅用于说明目的。在实际应用中,需要根据具体情况进行调整和修改,如添加异常处理等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

可乐鸡Bridge

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值