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
  1. 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();
}

  1. 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
  1. 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);

    }
}

  1. 数据库连接代码
#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


  1. 运行结果
    QT登录注册

QT登录注册

  • 24
    点赞
  • 190
    收藏
    觉得还不错? 一键收藏
  • 20
    评论
实现用户登录与注册的功能,需要使用Qt提供的一些类和方法,如QLineEdit、QPushButton、QLabel、QMessageBox等。下面是一个示例代码: ``` #include <QtWidgets/QApplication> #include <QtWidgets/QVBoxLayout> #include <QtWidgets/QHBoxLayout> #include <QtWidgets/QLineEdit> #include <QtWidgets/QPushButton> #include <QtWidgets/QLabel> #include <QtWidgets/QMessageBox> int main(int argc, char *argv[]) { QApplication a(argc, argv); // 创建窗口和布局 QWidget *window = new QWidget; QVBoxLayout *layout = new QVBoxLayout(window); // 创建用户名和密码输入框 QLineEdit *usernameEdit = new QLineEdit; QLineEdit *passwordEdit = new QLineEdit; passwordEdit->setEchoMode(QLineEdit::Password); // 创建登录和注册按钮 QPushButton *loginButton = new QPushButton("登录"); QPushButton *registerButton = new QPushButton("注册"); // 创建提示标签 QLabel *tipLabel = new QLabel("请输入用户名和密码"); // 将用户名、密码输入框和提示标签添加到布局中 layout->addWidget(usernameEdit); layout->addWidget(passwordEdit); layout->addWidget(tipLabel); // 创建水平布局,并将登录和注册按钮添加到其中 QHBoxLayout *buttonLayout = new QHBoxLayout; buttonLayout->addWidget(loginButton); buttonLayout->addWidget(registerButton); layout->addLayout(buttonLayout); // 连接登录按钮的clicked信号和槽函数 QObject::connect(loginButton, &QPushButton::clicked, [=]() { QString username = usernameEdit->text(); QString password = passwordEdit->text(); if (username.isEmpty() || password.isEmpty()) { QMessageBox::warning(window, "警告", "请输入用户名和密码"); } else { // TODO: 根据用户名和密码验证用户是否存在,并进行登录操作 QMessageBox::information(window, "提示", "登录成功"); } }); // 连接注册按钮的clicked信号和槽函数 QObject::connect(registerButton, &QPushButton::clicked, [=]() { QString username = usernameEdit->text(); QString password = passwordEdit->text(); if (username.isEmpty() || password.isEmpty()) { QMessageBox::warning(window, "警告", "请输入用户名和密码"); } else { // TODO: 根据用户名和密码创建新用户,并进行注册操作 QMessageBox::information(window, "提示", "注册成功"); } }); window->show(); return a.exec(); } ``` 上面的示例代码中,首先创建了一个窗口和一个垂直布局,并将用户名、密码输入框和提示标签添加到布局中。然后创建了一个水平布局,并将登录和注册按钮添加到其中。使用QObject::connect()方法将登录和注册按钮的clicked信号连接到对应的槽函数中。在槽函数中,先获取用户名和密码输入框中的文本,然后根据用户名和密码进行登录或注册操作,并在操作完成后弹出提示框。注意,这里的登录和注册操作需要根据具体的业务逻辑进行实现

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值