QT实现用户登录注册

作者:阿宁(xin)。 时间:2022-07-10 08:21:57 

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

#include "widget.h"
#include "ui_widget.h"

//窗口设置
#include <QStyle>

//数据库连接
#include <QtSql/QSqlQuery>//数据库操作函数
#include <QtSql/QSqlError>//输出错误信息

#include <QMessageBox>//
#include <QSettings>//读写配置文件
#include <QtDebug>

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

//窗口设置
? ? //设置窗口不显示标题,无边框
? ? ?setWindowFlags(Qt::Window|Qt::FramelessWindowHint);

//设置最小化、关闭按钮

? ? ?//获取最小化、关闭按钮图标

? ? ? QPixmap minPix = style()->standardPixmap(QStyle::SP_TitleBarMinButton);
? ? ? QPixmap closePix = style()->standardPixmap(QStyle::SP_TitleBarCloseButton);

? ? ? ui->mintoolButton->setIcon(minPix);
? ? ? ui->closetoolButton->setIcon(closePix);
? ? ? ui->mintoolButton->setStyleSheet("bakground-color:tranparent:");
? ? ? ui->closetoolButton->setStyleSheet("bakground-color:tranparent:");

? ? ? connect(ui->mintoolButton,&QPushButton::clicked,this,&Widget::showMinimized);
? ? ? connect(ui->closetoolButton,&QPushButton::clicked,this,&Widget::close);

//数据库连接
? ? ? //连接数据库
? ? ? ? ?//查看当前支持的数据库的驱动
? ? ? ? ? qDebug()<<QSqlDatabase::drivers();

? ? ? ? ? QSqlDatabase DB;//创建一个数据库的文件
? ? ? ? ?//加载数据库的文件
? ? ? ? ? QString aFile="./dataBase.db";
? ? ? ? ? if(aFile.isEmpty())
? ? ? ? ? {
? ? ? ? ? ? ? qDebug()<<" 数据库文件加载失败 " ;
? ? ? ? ? ? ? return ;
? ? ? ? ? }
? ? ? ? ? //打开数据库
? ? ? ? ? DB=QSqlDatabase::addDatabase("QSQLITE");//创建QSQLITE数据库连接
? ? ? ? ? DB.setDatabaseName(aFile); //数据库名
? ? ? ? ? if(!DB.open())
? ? ? ? ? {
? ? ? ? ? ? ? //没有数据库文件则创建文件
? ? ? ? ? ? ? qDebug()<<"数据库文件打开失败";
? ? ? ? ? ? ? qDebug()<<DB.lastError().text();//输出错误信息
? ? ? ? ? ?}
? ? ? ? ? qDebug()<< " 打开数据库文件成功 " ;

? ? ? //从配置文件中读取用户名和密码:
? ? ? ? ? QSettings setting("config.ini",QSettings::IniFormat);
? ? ? ? ? QString account = setting.value("section/account").toString();
? ? ? ? ? QString password = setting.value("section/password").toString();
? ? ? ? ? ui->accountEdit->setText(account);
? ? ? ? ? ui->passwordEdit->setText(password);

? ? ? ? ?//用户注册,向数据库插入数据
? ? ? ? ? connect(ui->registerButton,&QPushButton::clicked,this,[=](){

? ? ? ? ? //接受用户输入:
? ? ? ? ? ? ? QString account = ui->accountEdit->text();//用户账号
? ? ? ? ? ? ? QString password = ui->passwordEdit->text();//密码

? ? ? ? ? //创建自己需要使用的表格
? ? ? ? ? ? ? QSqlQuery query(DB);
? ? ? ? ? ? ? if(!query.exec("create table user(account varchar(255) primary key, password varchar(255))"))
? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? qDebug() << "Error: Fail to create table."<< query.lastError();
? ? ? ? ? ? ? }
? ? ? ? ? ? ? else
? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? qDebug() << "Table created!";
? ? ? ? ? ? ? }

? ? ? ? ? //插入数据
? ? ? ? ? ? ? QString qs = QString("insert into user(account,password) values('%1','%2')")
? ? ? ? ? ? ? ? ? ? ? .arg(account).arg(password);

? ? ? ? ? ? ? if(query.exec(qs)) //如果插入成功
? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? QMessageBox::information(this,"注册","注册成功");
? ? ? ? ? ? ? }
? ? ? ? ? ? ? else
? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? QMessageBox::information(this,"注册","注册失败");
? ? ? ? ? ? ? ? ? qDebug()<<query.lastError().text();//输出错误信息
? ? ? ? ? ? ? ? ? //return;
? ? ? ? ? ? ? }

? ? ? ? ? //查看数据
? ? ? ? ? ? ? //查看数据库中有的表格的名字
? ? ? ? ? ? ? qDebug()<<"查看数据库中所有的表:";
? ? ? ? ? ? ? QStringList str_table=DB.tables();
? ? ? ? ? ? ? qDebug()<<str_table;
? ? ? ? ? ? ? //查询数据库中的数据
? ? ? ? ? ? ? qDebug()<<"查看数据库中数据";
? ? ? ? ? ? ? query.prepare ("SELECT * FROM user");
? ? ? ? ? ? ? query.exec();
? ? ? ? ? ? ? while(query.next())
? ? ? ? ? ? ? {
? ? ? ? ? ? ? ? ? qDebug()<<QString("account:%1,password:%2").
? ? ? ? ? ? ? ? ? ? ? ? ? ? arg(query.value("account").toString()).arg(query.value("password").toString());
? ? ? ? ? ? ? }

? ? ? ? ? });

? ? ? //用户登录:查询数据

? ? ? ? ? connect(ui->loginButton,&QPushButton::clicked,this,[=](){

? ? ? ? ? ? ? //接受用户输入:
? ? ? ? ? ? ? ?QString account = ui->accountEdit->text();//用户账号
? ? ? ? ? ? ? ?QString password = ui->passwordEdit->text();//密码

? ? ? ? ? ? ? //查询数据
? ? ? ? ? ? ? ?QSqlQuery query;//操作数据库
? ? ? ? ? ? ? ?QString qs = QString("select * from user where account ='%1' and password='%2'").
? ? ? ? ? ? ? ? ? ? ? ?arg(account).arg(password);

? ? ? ? ? ? ? ?if(!query.exec(qs))//如果没有查到记录
? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? ?qDebug() << query.lastError().text();//输出错误信息
? ? ? ? ? ? ? ? ? ?return;
? ? ? ? ? ? ? ?}

? ? ? ? ? ? ? ?//获取查询的数据
? ? ? ? ? ? ? ?if(query.next())//获取到数据
? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? ?QMessageBox::information(this,"登录","登录成功");

? ? ? ? ? ? ? ? ? ?connect(tw,&TestWidget::testSigna,this,&Widget::show);//显示主窗口

? ? ? ? ? ? ? ? ? ?//在配置文件中记录用户账号密码
? ? ? ? ? ? ? ? ? ?if(ui->checkBox->isChecked())//选中,也就是用户已经登录
? ? ? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? ? ? ?//创建配置文件
? ? ? ? ? ? ? ? ? ? ? ?QSettings setting("config.ini",QSettings::IniFormat);//配置文件在工程目录下
? ? ? ? ? ? ? ? ? ? ? ?//把用户账号密码写到配置文件中
? ? ? ? ? ? ? ? ? ? ? ?setting.beginGroup("section");//节开始
? ? ? ? ? ? ? ? ? ? ? ?setting.setValue("account",account);
? ? ? ? ? ? ? ? ? ? ? ?setting.setValue("password",password);
? ? ? ? ? ? ? ? ? ? ? ?setting.endGroup();//结束
? ? ? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?}
? ? ? ? ? ? ? ?else
? ? ? ? ? ? ? ?{
? ? ? ? ? ? ? ? ? ?QMessageBox::information(this,"登录","登录失败");
? ? ? ? ? ? ? ?}
? ? ? ? ? });

}

Widget::~Widget()
{
? ? delete ui;
}

#按钮的ui实现

QT实现用户登录注册

QT实现用户登录注册

结果

QT实现用户登录注册

QT实现用户登录注册

QT实现用户登录注册

来源:https://blog.csdn.net/qq_44423388/article/details/124202373

标签:QT,登录,注册
0
投稿

猜你喜欢

  • java使用计算md5校验码方式比较两个文件是否相同

    2023-05-10 23:43:16
  • C#调用海康工业相机SDK采集图像并在Halcon窗口中显示方式

    2022-06-26 00:48:02
  • Java两种常用的随机数生成方式(小白总结)

    2023-02-16 16:54:19
  • java private关键字用法实例

    2022-01-16 10:08:06
  • android studio数据存储建立SQLite数据库实现增删查改

    2023-11-29 17:11:42
  • 浅谈单例模式和线程安全问题

    2023-11-25 06:27:34
  • 从Python程序中访问Java类的简单示例

    2022-02-19 08:53:13
  • 详解Vue响应式的部分实现

    2022-12-21 23:25:53
  • java实现双色球抽奖算法

    2023-11-28 23:51:51
  • 怎样使用PowerMockito 测试静态方法

    2022-06-18 08:28:59
  • C# 显示、隐藏窗口对应的任务栏

    2023-06-13 03:57:32
  • Unity通用泛型单例设计模式(普通型和继承自MonoBehaviour)

    2023-08-24 14:53:28
  • Java中的强引用,软引用,弱引用,虚引用的作用介绍

    2023-08-27 11:03:28
  • Android编程实现状态保存的方法分析

    2023-07-17 12:54:45
  • SpringBoot 在项目启动之后执行自定义方法的两种方式小结

    2021-05-25 15:46:36
  • Android编程计算函数时间戳的相关方法总结

    2023-05-27 18:29:57
  • springboot+mybatis配置控制台打印sql日志的方法

    2023-12-15 15:40:55
  • Swing常用组件之多行文本区JTextArea

    2023-11-08 14:16:49
  • 一文总结Java获取文件后缀名的所有方法

    2022-10-18 16:06:40
  • Android Jetpack库剖析之LiveData组件篇

    2022-08-31 02:08:13
  • asp之家 软件编程 m.aspxhome.com