QT用户登录注册
阿宁(xin)。 人气:0#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实现
结果
加载全部内容