这篇文章主要为大家详细介绍了QT实现用户登录注册,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了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实现用户登录注册
猜你喜欢
- C语言手把手带你掌握带头双向循环链表 2023-04-03
- Easyx实现扫雷游戏 2023-02-06
- C语言qsort()函数的使用方法详解 2023-04-26
- C++ 数据结构超详细讲解顺序表 2023-03-25
- 我应该为我的项目使用相对包含路径,还是将包含目录放在包含路径上? 2022-10-30
- 详解C语言中sizeof如何在自定义函数中正常工作 2023-04-09
- ubuntu下C/C++获取剩余内存 2023-09-18
- C语言详解float类型在内存中的存储方式 2023-03-27
- c++ const 成员函数,返回一个 const 指针.但是返回的指针是什么类型的 const? 2022-10-11
- Qt计时器使用方法详解 2023-05-30
