QT如何实现用户登录注册功能

蜗牛 互联网技术资讯 2022-06-15 23 0

这篇文章主要介绍“QT如何实现用户登录注册功能”,在日常操作中,相信很多人在QT如何实现用户登录注册功能问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”QT如何实现用户登录注册功能”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

1、login.h

#ifndef LOGIN_H
#define LOGIN_H

#include <QWidget>

namespace Ui {
class Login;
}

class Login : public QWidget
{
    Q_OBJECT

public:
    explicit Login(QWidget *parent = 0);
    ~Login();

private slots:
    void on_btn_login_clicked();
    void on_btn_register_clicked();

private:
    Ui::Login *ui;
};

#endif // WIDGET_H

2、login.cpp

#include "login.h"
#include "ui_login.h"
#include "register.h"
#include "mainwindow.h"
#include <QMessageBox>
#include <QSqlQuery>
#include <QFile>
#include <QDebug>

Login::Login(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Login)
{
    ui->setupUi(this);
    ui->ledit_password->setEchoMode(QLineEdit::Password);
}

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

void Login::on_btn_login_clicked()
{
    QString username = ui->ledit_username->text();
    QString password = ui->ledit_password->text();

    if(username == "" ||password == ""){
        QMessageBox::information(this,"警告","输入不能为空",QMessageBox::Ok);
    }else{

        QSqlQuery query;
        query.prepare("select username,password from admin where username=:username and password = :password ");

        query.bindValue(":username", username);
        query.bindValue(":password", password);
        query.exec();
        if(!query.next())
        {
            //结果集为空
            //执行某操作
            QMessageBox::information(this,"警告","用户名或密码错误!",QMessageBox::Ok);
        }
        else
        {
            QMessageBox::information(this,"提醒","登录成功!",QMessageBox::Ok);
            MainWindow *m = new MainWindow;
            m->show();
            this->close();
        }
    }


}

void Login::on_btn_register_clicked()
{
    Register *r = new Register;
    r->show();
}

3、register.h

#ifndef REGISTER_H
#define REGISTER_H

#include <QWidget>

namespace Ui {
class Register;
}

class Register : public QWidget
{
    Q_OBJECT

public:
    explicit Register(QWidget *parent = 0);
    ~Register();

private slots:
    void on_btn_logon_clicked();

private:
    Ui::Register *ui;
};

#endif // REGISTER_H

4、register.cpp

#include "register.h"
#include "ui_register.h"
#include <QButtonGroup>
#include <QMessageBox>
#include <QRegExp>
#include <QSqlQuery>

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

}

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

void Register::on_btn_logon_clicked()
{
    QString username = ui->ledit_username->text();
    QString password = ui->ledit_pwd->text();
    QString name = ui->ledit_name->text();
    int age = ui->ledit_age->text().toInt();

    QButtonGroup *bg=new QButtonGroup(this);
    bg->addButton(ui->rbtn_male,0);//一个值为0
    bg->addButton(ui->rbtn_female,1);//一个值为1

    int sel=bg->checkedId();//取到你所选的radioButton的值

    QString gender;

    switch(sel)
    {
    case 0:
      gender="男";
      break;
    case 1:
      gender="女";
      break;
    default:
      gender="";
    break;

    }

    QSqlQuery query;
    query.prepare("select username from patient where username=:username");
    query.bindValue(":username", username);
    query.exec();
    if(query.next())
    {

        QMessageBox::information(this,"警告","用户名已存在!",QMessageBox::Ok);

    }
    else
    {
        query.prepare("insert into patient(username,password,patientName,age,gender)"
                      "values(:username,:password,:patientName,:age,:gender)");
        query.bindValue(":username", username);
        query.bindValue(":password",password);
        query.bindValue(":patientName", name);
        query.bindValue(":age", age);
        query.bindValue(":gender", gender);

        query.exec();
        QMessageBox::information(this,"警告","注册成功!",QMessageBox::Ok);

    }
}

5、数据库连接代码

#ifndef CONNECTION
#define CONNECTION

#include <QSqlDatabase>
#include <QStringList>
#include <QString>
#include <QDebug>
#include <QSqlQuery>
#include <QMessageBox>

static bool createConnection()
{
    //测试用例:连接mysql数据库,做一个基本的sql语句操作

    //1、对qt下数据库的驱动进行遍历查看
    QStringList drivers = QSqlDatabase::drivers();
    foreach (QString driver, drivers) {
        qDebug()<<drivers;

    }

    //2、打开数据库过程
    QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
    //数据库连接的信息进行配置
    db.setHostName("localhost");//设置主机名(数据库所在电脑的名称)
    db.setDatabaseName("medical_system");//设置数据库名称
    db.setUserName("root");
    db.setPassword("123456");
    //db.setPort(3306);//因为是本机,该段代码可省略

    if(!db.open()){
        //打开失败的情况
        qDebug()<<"Failed to connect";

        //实际情况下我们应该使用图形化窗口提示打开失败
        QMessageBox::critical(0,"无法打开数据库","无法创建",QMessageBox::Yes);
        return false;
    }

    return true;


}

#endif // CONNECTION

运行结果

QT如何实现用户登录注册功能  qt 第1张

QT如何实现用户登录注册功能  qt 第2张

到此,关于“QT如何实现用户登录注册功能”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注蜗牛博客网站,小编会继续努力为大家带来更多实用的文章!

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

评论