QT实现用户登录注册功能

 更新时间:2022-06-15 10:11:20   作者:佚名   我要评论(0)

本文实例为大家分享了QT实现用户登录注册的具体代码,供大家参考,具体内容如下
1、login.h
#ifndef LOGIN_H
#define LOGIN_H

#include <QW

本文实例为大家分享了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

运行结果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
  • 如何利用PyQt5制作一个简单的登录界面
  • 手把手教你实现漂亮的Qt?登录界面
  • PyQt5实现用户登录GUI界面及登录后跳转
  • pyqt5制作登录窗口的详细过程
  • python通过PyQt5实现登录界面的示例代码
  • PyQt5设置登录界面及界面美化的实现
  • PyQt5实现登录页面
  • pyqt5利用pyqtDesigner实现登录界面
  • pyqt5实现登录界面的模板
  • QT实现用户登录注册

相关文章

  • QT实现用户登录注册功能

    QT实现用户登录注册功能

    本文实例为大家分享了QT实现用户登录注册的具体代码,供大家参考,具体内容如下 1、login.h #ifndef LOGIN_H #define LOGIN_H #include <QW
    2022-06-15
  • C#使用LINQ查询操作符实例代码(二)

    C#使用LINQ查询操作符实例代码(二)

    目录六、连表操作符1、内连接2、左外连接(DefaultIfEmpty)3、组连接七、集合操作八、分区操作符1、Take():2、TakeWhile():3、Skip():4、S
    2022-06-15
  • Golang泛型与反射的应用详解

    Golang泛型与反射的应用详解

    目录1. 泛型1.1 定义1.2 例子1.3 自定义泛型类型1.4 泛型与switch结合使用1.5 泛型实战2. 反射2.1 定义2.2 方法2.3 反射读取2.4 反射操作2.5
    2022-06-15
  • C#使用Clipboard类实现剪贴板功能

    C#使用Clipboard类实现剪贴板功能

    剪贴板是Windows操作系统中最常用的功能之一,它用来从一个应用程序向另一个应用程序传递数据,可以是文本,图象,甚至是程序对象。 不过剪贴
    2022-06-15
  • 面试手写实现Promise.all

    面试手写实现Promise.all

    目录前言常见面试手写系列Promise.resolve简要回顾源码实现Promise.reject简要回顾源码实现Promise.all简要回顾源码实现Promise.allSettled简
    2022-06-15
  • Java中String和StringBuffer及StringBuilder?有什么区别

    Java中String和StringBuffer及StringBuilder?有什么区别

    目录String类为什么是immutable(不可变的)如何保证不可变string类为不可变对象的好处前言: String 是 Java 语言非常基础和重要的类,提供了
    2022-06-15
  • C#实现读写CSV文件的方法详解

    C#实现读写CSV文件的方法详解

    目录CSV文件标准文件示例RFC 4180简化标准读写CSV文件使用CsvHelper使用自定义方法总结项目中经常遇到CSV文件的读写需求,其中的难点主要是C
    2022-06-15
  • 一次性彻底讲透Python中pd.concat与pd.merge

    一次性彻底讲透Python中pd.concat与pd.merge

    目录数据拼接:pd.concat数据关联:pd.merge两者区别数据的合并与关联是数据处理过程中经常遇到的问题,在SQL、HQL中大家可能都有用到 join、
    2022-06-15
  • Python利用PyAutoGUI模块实现控制鼠标键盘

    Python利用PyAutoGUI模块实现控制鼠标键盘

    目录前言1、鼠标的相关控制2、键盘的相关控制前言 PyAutoGUI是一个简单易用,跨平台的可以模拟键盘鼠标进行自动操作的python库。 使用pip的方
    2022-06-15
  • 详解Android中motion_toast的使用

    详解Android中motion_toast的使用

    目录前言motion_toast 介绍示例最简单用法其他内置的提醒自定义 toast总结前言 我们通常会用 toast(也叫吐司)来显示提示信息,例如网络请求
    2022-06-15

最新评论