qt+mysql多权限登录界面的实现
首先下载好sqlyog,以及mysql,Qt Creator,Qt在配置mysql的时候可能会遇到有些.dll移植的问题,一般都是把mysql下有的.lib和.dll放到Qt安装目录下。我这里因为代码太多只放一个普通用户注册的代码,首先的if语句就是必须让选择权限,这样才可以进入下一步,然后判断选择了哪个权限,接着判断输入框是否为空我这里自定义了一个bool函数Look。点击不同的登录权限会有不同
江畔何人初见月?江月何年初照人?
先看实现效果:
点击不同的登录权限会有不同的登录界面,这样就实现了权限的分配,你可以用此界面开发不同上位机或者管理系统的权限验证,实现不同的功能
这个登录界面内必须要先选择权限(其实就是选择用户、管理员、超级管理员),输入框不能为空,这样才可以正常操作
我实现的效果是让checkbox仅仅只有一个被选中,就是无论任何时候都只有一个选中
这个要设置checkbox的autoExclusive
进入主题
首先下载好sqlyog,以及mysql,Qt Creator,Qt在配置mysql的时候可能会遇到有些.dll移植的问题,一般都是把mysql下有的.lib和.dll放到Qt安装目录下。
接着拖动控件:
这里我为了好看事先在widget界面上又加了widget控件
然后在sqlyog创建数据库test:
创建普通用户表:
创建管理员表:
创建超级管理员表:
然后编写数据库初始化代码:
根据你的密码修改即可
void Login::InitMysql()
{
db=QSqlDatabase::addDatabase("QMYSQL");
db.setHostName("127.0.0.1"); //数据库服务器IP
db.setUserName("root"); //数据库用户名
db.setPassword("123456"); //密码
db.setDatabaseName("test"); //使用哪个数据库
if (db.open() == false) {
qDebug()<<"error";
return;
}else{
qDebug()<<"ok";
}
}
接着核心就是注册的代码:
我这里因为代码太多只放一个普通用户注册的代码,首先的if语句就是必须让选择权限,这样才可以进入下一步,然后判断选择了哪个权限,接着判断输入框是否为空我这里自定义了一个bool函数Look
接着根据Look的返回值进入下一步注册,因为注册需要去重而且我设置的username这类属性都是主键,不能重复注册
void Login::on_btnreg_clicked()
{
if(!(ui->checkBox_user->isChecked()||ui->checkBox_admin->isChecked()||ui->checkBox_root->isChecked())){
QMessageBox::about(NULL,"提示","请先选择权限");
}else{
if(ui->checkBox_user->isChecked()){
if(Look()){
//注册
QString sql1,sql2;
QString sql3;
QString inputName=ui->lineEditusername->text();
QString inputPassword=ui->lineEditpassword->text();
QSqlQueryModel *model1=new QSqlQueryModel;
QSqlQueryModel *model2=new QSqlQueryModel;
sql1="select username from user where username='"+inputName+"'";
model1->setQuery(sql1);
QModelIndex index1=model1->index(0,0);
sql2="select password from user where password ='"+inputPassword+"'";
model2->setQuery(sql2);
QModelIndex index2=model2->index(0,0);
if(index1.data()!=inputName)
{
QMessageBox::about(NULL,"提示","用户注册成功");
sql3="insert into user(username,password) values('"+inputName+"','"+inputPassword+"')";
QSqlQueryModel *model=new QSqlQueryModel;
model->setQuery(sql3);
clearedit();
}
else if(index1.data()==inputName)
{
QMessageBox::about(NULL,"提示","用户已经存在");
clearedit();
}
}else{
QMessageBox::about(NULL,"提示","输入不能为空!");
}
}
}
接下来登录的代码也是雷同:
if(!(ui->checkBox_user->isChecked()||ui->checkBox_admin->isChecked()||ui->checkBox_root->isChecked())){
qDebug()<<"fail";
QMessageBox::about(NULL,"提示","请先选择权限");
}else{
if(ui->checkBox_user->isChecked()){
if(Look()){
QString sql1,sql2;
QString sql3;
QString inputName=ui->lineEditusername->text();
QString inputPassword=ui->lineEditpassword->text();
QSqlQueryModel *model1=new QSqlQueryModel;
QSqlQueryModel *model2=new QSqlQueryModel;
sql1="select username from user where username='"+inputName+"'";
model1->setQuery(sql1);
QModelIndex index1=model1->index(0,0);
sql2="select password from user where password ='"+inputPassword+"'";
model2->setQuery(sql2);
QModelIndex index2=model2->index(0,0);
if(index1.data()==inputName&&inputPassword==index2.data())
{
QMessageBox::about(NULL,"提示","用户登录成功");
clearedit();
usermenu=new UserMake;
usermenu->show();
this->close();
}
else
{
QMessageBox::about(NULL,"提示","用户名或密码错误");
clearedit();
}
}else{
QMessageBox::about(NULL,"提示","输入不能为空!");
}
}
三种权限登录后为
相应的数据表也有了数据
总体项目框架是这样:
adminmake usermake rootmake就是不同的用户登录的类,在这些类中可以实现你的权限后的功能
需要可以私信联系

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐
所有评论(0)