Qt登录注册界面连接数据库实现

ui界面通过ui编辑器编写:

 

login.cpp


#include "farm_login.h"
#include "ui_farm_login.h"
#include <QLineEdit>
#include <QMessageBox>
#include <QtSql>

//登录界面

farm_login::farm_login(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::farm_login)
{
    ui->setupUi(this);

    //设置背景图片
    this->setObjectName("farm_login");    //这句话一定要有,不然,整个界面上的控件背景都跟界面背景一样
    this->setStyleSheet("#farm_login{border-image:url(:/picture/图片.png)}");

    //隐藏关闭、最大化、最小化
    setWindowFlags(Qt::FramelessWindowHint);

    //用户名输入提示
    ui->farm_login_user_lineEdit->setPlaceholderText("請输入用户名");

    //密码输入提示
    ui->farm_login_pwd_lineEdit->setPlaceholderText("请输入密码");



}

farm_login::~farm_login()
{
    delete ui;
}

void farm_login::on_farm_login_reg_pushButton_clicked()
{
    regwin.show();
    this->close();
}

void farm_login::on_farm_login_close_clicked()
{
    this->close();
}

void farm_login::on_farm_login_min_clicked()
{
    this->showMinimized();
}

void farm_login::on_farm_login_login_pushButton_clicked()
{
    QString user;
    QString pwd;
    user = ui->farm_login_user_lineEdit->text();//获取用户名
    pwd = ui->farm_login_pwd_lineEdit->text();//获取密码
    if(user == "")
        QMessageBox::warning(this,"","用户名不能为空!");
    else if(pwd == "")
        QMessageBox::warning(this,"","密码不能为空!");
    else
    {
        
        //sql语句在数据库中进行查询验证
        QString S =QString("select * from litterfarm.farmer where farm_user='%1' and farm_pwd='%2' ").arg(user).arg(pwd);
        QSqlQuery query;
         if(query.exec(S))
            {
             index.show();
             this->close();
         }
         else
            QMessageBox::warning(NULL,"Error","用户名或密码错误!!!");

    }
}

 

注册界面也同样有ui编辑器编写:

regist.cpp

#include "farm_reg.h"
#include "ui_farm_reg.h"
#include "farm_login.h"
#include <QString>
#include <QMessageBox>
#include <QtSql>

farm_reg::farm_reg(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::farm_reg)
{
    ui->setupUi(this);

    //隐藏关闭、最大化、最小化
    setWindowFlags(Qt::FramelessWindowHint);

    //用户名输入提示
    ui->farm_reg_user_lineEdit->setPlaceholderText("請输入用户名");

    //密码输入提示
    ui->farm_reg_pwd_lineEdit->setPlaceholderText("请输入密码");


}

farm_reg::~farm_reg()
{
    delete ui;
}

void farm_reg::on_farm_reg_close_pushButton_clicked()
{
    this->close();
}

void farm_reg::on_farm_reg_back_pushButton_clicked()
{
    login = new farm_login;
    login->show();
    this->close();
}

void farm_reg::on_farm_reg_reg_pushButton_clicked()
{
    QString user;
    QString pwd;
    user = ui->farm_reg_user_lineEdit->text();
    pwd = ui->farm_reg_pwd_lineEdit->text();
    if(user == "")
        QMessageBox::warning(this,"","用户名不能为空!");
    else if(pwd == "")
        QMessageBox::warning(this,"","密码不能为空!");
    else
    {
        QString i=QString("insert into litterfarm.farmer values ('%1','%2'); ").arg(user).arg(pwd);
        QString S =QString("select * from litterfarm.farmer where farm_user='%1' ").arg(user);
        QSqlQuery query;
         if(query.exec(i))
            {

             QMessageBox::information(NULL, "注册成功", "注册成功!!!", QMessageBox::Yes);
             login = new farm_login;
             login->show();
             this->close();
         }
         else if(query.exec(S)&&query.first())
            QMessageBox::warning(NULL,"Error","用户名重复!!!");
         else
            QMessageBox::warning(NULL,"Error","注册失败,请重试!!!");

    }


}

void farm_reg::on_farm_reg_min_pushButton_clicked()
{
    this->showMinimized();
}

 

Qt登录注册界面连接数据库的方法如下: 首先,打开登录界面的cpp文件(通常是mainwindow.cpp),在文件的开头添加以下代码来包含必要的头文件和命名空间: ```cpp #include <QtSql> #include <QSqlDatabase> #include <QSqlQuery> #include <QDebug> ``` 然后,在登录按钮的槽函数中添加以下代码来连接数据库和执行查询操作: ```cpp void MainWindow::on_btn_signin_clicked() { // 连接数据库 QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("your_database_name.sqlite"); // 替换为你的数据库文件名 if (!db.open()) { qDebug() << "Failed to connect to database"; return; } // 执行查询操作 QString username = ui->lineEdit_username->text(); QString password = ui->lineEdit_password->text(); QString sql = QString("SELECT * FROM user WHERE username='%1' AND password='%2'") .arg(username).arg(password); QSqlQuery query(sql); if (!query.next()) { qDebug() << "Login error"; QMessageBox::information(this, "登录认证", "登录失败,账户或密码错误"); } else { qDebug() << "Login success"; QMessageBox::information(this, "登录认证", "登录成功"); // 登录成功后可以跳转到其他页面 QWidget *w = new QWidget; w->show(); this->close(); } } ``` 对于注册界面,打开注册界面的cpp文件(通常是signup.cpp),在文件的开头添加以下代码来包含必要的头文件和命名空间: ```cpp #include <QtSql> #include <QSqlDatabase> #include <QSqlQuery> #include <QDebug> ``` 然后,在注册按钮的槽函数中添加以下代码来连接数据库和执行插入操作: ```cpp void Signup::on_pushButton_2_clicked() { // 连接数据库 QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); db.setDatabaseName("your_database_name.sqlite"); // 替换为你的数据库文件名 if (!db.open()) { qDebug() << "Failed to connect to database"; return; } // 执行插入操作 QString username = ui->lineEdit_username->text(); QString password = ui->lineEdit_passwd->text(); QString surepass = ui->lineEdit_surepasswd->text(); // 判断密码是否一致 if (password == surepass) { QString sql = QString("INSERT INTO user(username, password) VALUES('%1', '%2')") .arg(username).arg(password); QSqlQuery query; if (!query.exec(sql)) { qDebug() << "Insert error"; QMessageBox::information(this, "注册认证", "插入失败!"); } else { qDebug() << "Insert success"; QMessageBox::information(this, "注册认证", "插入成功!"); MainWindow *w = new MainWindow; w->show(); this->close(); } } else { QMessageBox::information(this, "注册认证", "两次密码输入不一致"); } } ``` 请注意,上述代码中的"your_database_name.sqlite"应替换为你实际使用的数据库文件名。此外,还需要确保已经正确安装了SQLite数据库驱动程序。 #### 引用[.reference_title] - *1* *3* [Qt设计精美的登录注册界面(包含SQLite数据库应用)](https://blog.csdn.net/weixin_45739654/article/details/125702849)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Qt如何连接数据库(以sqlite为例实现登录和注册界面)](https://blog.csdn.net/qq_45841146/article/details/107400705)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论 20
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值