江畔何人初见月?江月何年初照人?
先看实现效果:
在这里插入图片描述
点击不同的登录权限会有不同的登录界面,这样就实现了权限的分配,你可以用此界面开发不同上位机或者管理系统的权限验证,实现不同的功能
这个登录界面内必须要先选择权限(其实就是选择用户、管理员、超级管理员),输入框不能为空,这样才可以正常操作
我实现的效果是让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就是不同的用户登录的类,在这些类中可以实现你的权限后的功能
在这里插入图片描述
需要可以私信联系

Logo

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

更多推荐