当前位置: 首页 > news >正文

QT实现用户登录注册功能

本文实例为大家分享了QT实现用户登录注册的具体代码,供大家参考,具体内容如下

1、login.h

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

#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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

#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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

#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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

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

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

#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实现用户登录注册的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下 1、login.h ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 #ifndef LOGIN_H #define LOGIN_H #include <QWidget> namespace Ui { c…...

Docker--harbor私有仓库部署与管理

目录 一、构建私有库 1.下载 registry 镜像 2.在 daemon.json 文件中添加私有镜像仓库地址 3.运行 registry 容器 4.为镜像打标签 5.上传到私有仓库 6.列出私有仓库的所有镜像 7.列出私有仓库的centos镜像有哪些tag 8.测试私有仓库下载 二、Harbor 简介 1.什么是Harb…...

idea复制一份web服务在不同端口启动

Idea 运行多个微服务 Idea 一个服务开启多个端口运行 idea 开启多个端口服务_idea开启多个服务_HaHa_Sir的博客-CSDN博客 IntelliJ IDEA 中一个服务按多个端口同时启动与显示Services面板_一个服务多个端口_Touch&的博客-CSDN博客 Idea中一个服务按多个端口同时启动_idea…...

CRM系统化整合从N-1做减法实践 | 京东物流技术团队

1 背景 京销易系统已经接入大网、KA以及云仓三个条线商机&#xff0c;每个条线商机规则差异比较大&#xff0c;当前现状是独立实现三套系统分别做支撑。 2 目标 2022年下半年CRM目标是完成9个新条线业务接入&#xff0c;完成销售过程线上化&#xff0c;实现销售规则统一。 …...

STM32CUBUMX配置RS485(中断接收)--保姆级教程

———————————————————————————————————— ⏩ 大家好哇&#xff01;我是小光&#xff0c;嵌入式爱好者&#xff0c;一个想要成为系统架构师的大三学生。 ⏩最近在开发一个STM32H723ZGT6的板子&#xff0c;使用STM32CUBEMX做了很多驱动&#x…...

苹果iOS 16.6 RC发布:或为iPhone X/8系列养老版本

今天苹果向iPhone用户推送了iOS 16.6 RC更新(内部版本号&#xff1a;20G75)&#xff0c;这是时隔两个月的首次更新。 按照惯例RC版基本不会有什么问题&#xff0c;会在最近一段时间内直接变成正式版&#xff0c;向所有用户推送。 需要注意的是&#xff0c;鉴于iOS 17正式版即将…...

【100天精通python】Day16:python 模块的搜索目录和导入模块异常时的处理方法

目录 1 搜索模块所在目录 2 模块不在搜索目录中 2.1 添加模块所在的目录到PYTHONPATH环境变量 2.2 修改sys.path 2.3 使用绝对路径导入 2.4将模块复制到Python搜索路径中的任意一个目录 2.5 总结 3 其他导入的模块异常处理 3.1 模块未安装 3.2 模块名称拼写错误 3.3模…...

SOC FPGA介绍及开发设计流程

目录 一、SoC FPGA简介 二、SoC FPGA开发流程 2.1 硬件开发 2.2 软件开发 一、SoC FPGA简介 SOC FPGA是在FPGA架构中集成了基于ARM的硬核处理器系统(HPS)&#xff0c;包括处理器、外设和存储器控制器。相较于传统的仅有ARM处理器或 FPGA 的嵌入式芯片&#xff0c;SOC FPGA既…...

MySQL vs. Oracle: 函数比较与联系

引言 MySQL和Oracle是两个广泛使用的关系型数据库管理系统&#xff08;RDBMS&#xff09;&#xff0c;它们提供了丰富的函数库来处理和操作数据。本文将详细介绍MySQL和Oracle的所有函数&#xff0c;并逐一介绍它们的相同和不同之处&#xff0c;以帮助读者更好地理解和使用这两…...

【Django学习】(十五)API接口文档平台_项目流程分析_日志器_认证_授权

一、API接口文档平台 使用API接口文档不经可以很好的的维护接口数据&#xff0c;还给测试人员的接口测试工作带来了便利&#xff1b; 我们可以在全局配置文件中添加路由路径生成接口文档 1、使用docs接口文档维护接口 1.1在全局配置文件里指定用于支持coreapi的Schema # 指…...

经营简报及考核360表格

文章目录 经营简报效果图代码tableObjectSpanMethod.js 考核360委员会效果图 经营简报效果图不需要合并单元格且有汇总表头的 懒得封装了&#xff0c;所以整体没有封装 经营简报 效果图 代码 <template><el-tableref"tableRef":data"tableData.lengt…...

Spring Security 构建基于 JWT 的登录认证

一言以蔽之&#xff0c;JWT 可以携带非敏感信息&#xff0c;并具有不可篡改性。可以通过验证是否被篡改&#xff0c;以及读取信息内容&#xff0c;完成网络认证的三个问题&#xff1a;“你是谁”、“你有哪些权限”、“是不是冒充的”。 为了安全&#xff0c;使用它需要采用 …...

PyTorch从零开始实现Transformer

文章目录 自注意力Transformer块编码器解码器块解码器整个Transformer参考来源全部代码&#xff08;可直接运行&#xff09; 自注意力 计算公式 代码实现 class SelfAttention(nn.Module):def __init__(self, embed_size, heads):super(SelfAttention, self).__init__()self.e…...

运动蓝牙耳机什么牌子的好用、最好用的运动蓝牙耳机推荐

音乐是运动的灵魂&#xff0c;而一款优秀的运动耳机则是让音乐与我们的身体完美融合的关键。今天&#xff0c;我推荐五款备受运动爱好者喜爱的耳机&#xff0c;它们以卓越的音质、舒适的佩戴和出色的稳定性能脱颖而出&#xff0c;助你在运动中创造最佳状态。 1、NANK南卡Runne…...

HTTP、HTTPS协议详解

文章目录 HTTP是什么报文结构请求头部响应头部 工作原理用户点击一个URL链接后&#xff0c;浏览器和web服务器会执行什么http的版本持久连接和非持久连接无状态与有状态Cookie和Sessionhttp方法&#xff1a;get和post的区别 状态码 HTTPS是什么ssl如何搞到证书nginx中的部署 加…...

【算法与数据结构】222、LeetCode完全二叉树的节点个数

文章目录 一、题目二、一般遍历解法三、利用完全二叉树性质四、完整代码 所有的LeetCode题解索引&#xff0c;可以看这篇文章——【算法和数据结构】LeetCode题解。 一、题目 二、一般遍历解法 思路分析&#xff1a;利用层序遍历&#xff0c;然后用num记录节点数量。其他的例如…...

登录和注册表单的11个HTML最佳实践

原文&#xff1a;11 HTML best practices for login & sign-up forms 原作者&#xff1a;Andrey Sitnik 翻译已获原文作者许可&#xff0c;禁止转载和商用 大多数网站都有登录或注册表单;它们是业务转换的关键部分。然而&#xff0c;即使是流行的站点也没有实现本文中提到的…...

Mysql删除历史数据

Mysql定时删除历史数据 实现 1.创建存储过程&#xff08;函数&#xff09; SQL DROP PROCEDURE IF EXISTS KeepDatasWith30Days CREATE PROCEDURE KeepDatasWith30Days() BEGINSELECT maxId:max(Id) FROM tableName WHERE CreateTime<DATE(DATE_SUB(NOW(),INTERVAL 31 D…...

Python—数据结构(一)

先放一张自己学习和整理归纳的思维导图&#xff0c;以便让大家都知道我自己的整体学习路线。 数据结构的学习路上内容枯燥&#xff0c;但坚持下来一定有很大的收获&#xff01;加油&#x1f4aa;&#x1f3fb;&#xff01; 数据结构 数据的概念数据元素&#xff1a; 若干基本…...

离线环境安装flask依赖包

找到当前版本需要的所有依赖包&#xff0c;生产flask项目生成项目依赖包文件requirements.txt 1)在当前项目目录下 生成requirements文件&#xff1a;pip freeze >requirements.txt 执行requirements文件&#xff0c;安装依赖包&#xff1a;pip install -r requirements.t…...

设计模式和设计原则回顾

设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

相机Camera日志实例分析之二:相机Camx【专业模式开启直方图拍照】单帧流程日志详解

【关注我&#xff0c;后续持续新增专题博文&#xff0c;谢谢&#xff01;&#xff01;&#xff01;】 上一篇我们讲了&#xff1a; 这一篇我们开始讲&#xff1a; 目录 一、场景操作步骤 二、日志基础关键字分级如下 三、场景日志如下&#xff1a; 一、场景操作步骤 操作步…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

为什么需要建设工程项目管理?工程项目管理有哪些亮点功能?

在建筑行业&#xff0c;项目管理的重要性不言而喻。随着工程规模的扩大、技术复杂度的提升&#xff0c;传统的管理模式已经难以满足现代工程的需求。过去&#xff0c;许多企业依赖手工记录、口头沟通和分散的信息管理&#xff0c;导致效率低下、成本失控、风险频发。例如&#…...

剑指offer20_链表中环的入口节点

链表中环的入口节点 给定一个链表&#xff0c;若其中包含环&#xff0c;则输出环的入口节点。 若其中不包含环&#xff0c;则输出null。 数据范围 节点 val 值取值范围 [ 1 , 1000 ] [1,1000] [1,1000]。 节点 val 值各不相同。 链表长度 [ 0 , 500 ] [0,500] [0,500]。 …...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1

每日一言 生活的美好&#xff0c;总是藏在那些你咬牙坚持的日子里。 硬件&#xff1a;OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写&#xff0c;"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)

要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况&#xff0c;可以通过以下几种方式模拟或触发&#xff1a; 1. 增加CPU负载 运行大量计算密集型任务&#xff0c;例如&#xff1a; 使用多线程循环执行复杂计算&#xff08;如数学运算、加密解密等&#xff09;。运行图…...