#include "login.h"
#include "ui_login.h"
#include "connect.h"
#include <QMessageBox>//弹出对话框
#include <QSqlError>//数据库错误相关
#include <QSqlDatabase>//连接数据库相关
#include <QSqlQuery>//执行sql语句相关
#include <QDebug>//程序输出,相当于print
#include <QSettings>//自动登录相关
#include <QTextCodec>
#define CONFIGPATH (QCoreApplication::applicationDirPath() + "config.ini") //设置一个用于存储的ini文件
login::login(QWidget *parent) :
QDialog(parent),
ui(new Ui::login)
{
ui->setupUi(this);
loginInit();//登录界面初始化
}
login::~login()
{
delete ui;
}
void login::loginInit()
{
QSettings setting(CONFIGPATH, QSettings::IniFormat); // 打开存放登录信息的ini文件
setting.setIniCodec(QTextCodec::codecForName("UTF-8")); // 设置编码格式,如果这里有中文,读和写的时候都要保持一致
QString isremember = setting.value("login/isremember").toString(); // 是否选择了记住密码
QString name = setting.value("login/username").toString(); // 账号
QString password = setting.value("login/password").toString(); // 密码
ui->lineEdit_user->setText(name); // 显示上一次登录的账号名
if (isremember == "true") // 记住密码
{
ui->lineEdit_pwd->setText(password); // 密码写在密码输入框
ui->checkBox_rempwd->setChecked(true); // 记住密码那里打√
ispassword = true; // 记住密码
}
else
{
ui->checkBox_rempwd->setChecked(false); // 记住密码那里不打√
ispassword = false; // 不记住密码
}
}
//登录按钮
void login::on_pushButton_login_clicked()
{
createConnection();
mymodel_login = new QSqlTableModel(this);
mymodel_login->setTable("UserManagement");//设置表的名称
mymodel_login->setEditStrategy(QSqlTableModel::OnManualSubmit);// 设置编辑策略
//获取用户名,密码,类型
QString user_name = ui->lineEdit_user->text().trimmed();//trimmed去除开头结尾的空白字符串
QString user_pwd = ui->lineEdit_pwd->text().trimmed();
QString user_type = ui->comboBox_ID->currentText().trimmed();
if(user_name.isEmpty())
{
QMessageBox::about(this, "注意!", "用户名不能为空");
return;
}
if(user_pwd.isEmpty())
{
QMessageBox::about(this, "注意!", "用户密码不能为空");
return;
}
QSqlQuery query;
//遍历用户数据库
// query.exec("select * from UserManagement");
// while(query.next())
// qDebug()<< query.value("name").toString()<<query.value("password").toString()<<query.value("type").toString();
//方法1
mymodel_login->setFilter(QString("name = '%1'").arg(user_name));//可选择使用
QString str="select count(id) from UserManagement where name='"+user_name+"' and password='"+user_pwd+"'and type='"+user_type+"'";
query.exec(str);
query.next();
int count = query.value(0).toInt();
if(count == 1)
{
qDebug() <<user_type <<":"<< user_name << "logining...";
QSettings writeini(CONFIGPATH, QSettings::IniFormat); // 打开ini文件
writeini.setIniCodec(QTextCodec::codecForName("UTF-8")); // 设置编码格式
if (ispassword) // 选择保存密码
{
writeini.setValue("login/isremember", "true"); // 写ini文件时记录为true
}
else // 不保存密码
{
writeini.setValue("login/isremember", "false"); // 写ini文件时记录为false
}
writeini.setValue("login/username", user_name); // 把账号写入ini文件
writeini.setValue("login/password", user_pwd); // 把密码写入ini文件
accept();
}
//方法2
// QString sql = QString("select * from UserManagement where name = '%1';").arg(user_name); // 查询用户
// if(query.exec(sql))
// {
// if(query.next()) // true则用户存在
// {
// qDebug()<< query.value("name").toString();
// if(user_pwd == query.value("password").toString()) // 密码相等
// if(user_type==query.value("type").toString()) //身份相等
// {
// accept();//进入
// }
// }
// }
else
{
QMessageBox::information(this,"提示","用户名或密码错误");
}
}
void login::on_pushButton_forgivePWD_clicked()
{
}
//记住密码
void login::on_checkBox_rempwd_clicked()
{
// 根据是否记住密码改变标志位
ispassword = ui->checkBox_rempwd->isChecked();
}
没有合适的资源?快使用搜索试试~ 我知道了~
学习日记:qt用户分级登录(多权限登录)以及记住密码功能的实现
共10个文件
cpp:3个
h:3个
ui:2个
需积分: 0 2 下载量 179 浏览量
2024-02-07
23:17:51
上传
评论
收藏 8KB RAR 举报
温馨提示
学习日记:qt用户分级登录(多权限登录)以及记住密码功能的实现
资源推荐
资源详情
资源评论
收起资源包目录
MDMS.rar (10个子文件)
MDMS
login.cpp 5KB
connect.h 2KB
mainwindow.h 313B
mainwindow.cpp 233B
login.ui 4KB
main.cpp 403B
mainwindow.ui 654B
MDMS.pro 475B
MDMS.pro.user 23KB
login.h 623B
共 10 条
- 1
资源评论
没有超调
- 粉丝: 98
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功