qt6项目商品管理系统--登录界面(数据库连接,功能实现)

简介

一个比较简单的登录界面,包括界面布局,功能实现,由于账户密码是保存在本地数据库中,还包括数据库的连接、查询等操作。

效果图如下:

1、准备工作:

数据库创建 

我这里提前创建了个stock数据库,并创建了个userpassword表存储用户、密码和用户类型(cutomerType=0表示管理员,1表示普通用户)。

连接数据库

qt6不默认下载mysql的驱动,可以去网上查找下载方法。我这里提前创建了个stock数据库,并创建了个userpassword表存储用户、密码和用户类型。连接数据库代码如下:

需要先在.h文件声明一个数据库

private:
    QSqlDatabase db;

.cpp文件

db = QSqlDatabase::addDatabase("QMYSQL");//加载mysql数据库驱动,
db.setDatabaseName("stock");
db.setHostName("localhost");
db.setUserName("root");
db.setPassword("123456");
if(!db.open())
{
    QMessageBox::information(this,"数据库","打开失败");
}

2、登录界面设置

ui界面的设置

布局直接在ui里面设置的,ui里面的命名我用红色字写在上面

界面的其他设置:
    setWindowTitle("登录");
    setWindowIcon(QIcon(":/windowicon.png"));
    setWindowFlags(windowFlags() & ~Qt::WindowMaximizeButtonHint);
    //设置窗口固定大小
    setFixedSize(293,176);


    //设置输入密码控件为密文
    ui->lineEdit_password->setEchoMode(QLineEdit::Password);

    //限制输入密码长度
    ui->lineEdit_uesername->setMaxLength(6);
    ui->lineEdit_password->setMaxLength(6);

    //初始用户权限
    ui->comboBox_permision->addItem("管理员",1);
    ui->comboBox_permision->addItem("普通用户",2);

 由于设置了一个是否记住密码的选项,所以在这里我给了lineEdit一个初始化的操作

//登录界面初始化
void MainWidget::loginInit()
{
    //打开存放登录信息的ini文件
    QSettings setting(CONFIGPATH, QSettings::IniFormat);

    //上次登录成功是否选择了记住密码
    bool isremember = setting.value("login/isremember").toBool();

    if(isremember)
    {
        QString name = setting.value("login/userName").toString();
        QString psw = setting.value("login/password").toString();
        int customerType = setting.value("login/customerType").toInt();
        ui->lineEdit_uesername->setText(name);
        ui->lineEdit_password->setText(psw);
        ui->checkBox->setChecked(true);
        ui->comboBox_permision->setCurrentIndex(customerType);
    }
}

 这里的CONFIGPATH是一个用来保存上次成功登录信息的.ini文件,后面会讲。loginInit()写好之后,直接放在构造函数的最后调用一下就行。

3、一些按钮功能的实现

退出按钮的槽函数:
void MainWidget::on_pushButton_exit_clicked()
{
    this->close();
}
.ini文件

这里有一个.ini文件,我是用来保存上一次登录成功后用户输入的账户密码,以便下一次打开能够显示在窗口上。

这里得先创建一个.ini文件,保存的位置是在这里

设置一个宏定义

//上一次登录成功并选择了记住密码的文件位置
#define CONFIGPATH (QCoreApplication::applicationDirPath() + "/config/config.ini")
 登录按钮的槽函数:
void MainWidget::on_pushButton_login_clicked()
{
    //获取输入的用户名和密码
    QString userName = ui->lineEdit_uesername->text();//用户名
    QString passWord = ui->lineEdit_password->text();//密码
    int customerType = ui->comboBox_permision->currentIndex();//用户类型

    if (userName == "" || password == "")
    {
        QMessageBox::information(this,"登录失败","用户名或密码不能为空");
        return;
    }

    //定义一个sql模型
    QSqlQueryModel *model = new QSqlQueryModel;

    //sql语句,因为username是主键,不会有相同的username,所以直接查询username就可以
    QString sqlName;

    //找出表中userpassword(项名)中等于给定值的数据
    sqlName = "SELECT * FROM userpassword WHERE userName = '"+userName+"'";

    //执行sql语句
    model->setQuery(sqlName);

    //检查用户是否存在
    QModelIndex index1 = model->index(0,0);
    QModelIndex index2 = model->index(0,1);
    QModelIndex index3 = model->index(0,2);
    if(index1.data()==0 || index2.data()!=passWord || index3.data()!=customerType)
    {
        QMessageBox::information(this,"登录失败","用户名或密码错误");
    }
    //登录成功,只有登录成功时才改变.ini文件
    else if(index1.data()!=0 && index2.data()==passWord && index3.data()==customerType)
    {
        //是否选中了记住密码
        bool isremember = ui->checkBox->isChecked();
        //打开存放登录信息的ini文件
        QSettings setting(CONFIGPATH, QSettings::IniFormat);
        //如果选中则将用户密码放置文件记录
        if(isremember)
        {
            //是否记住密码改为true(此处记录的是上次登录时是否选择了记住密码)
            setting.setValue("login/isremember", "true");
            setting.setValue("login/userName", userName);
            setting.setValue("login/password", passWord);
            setting.setValue("login/customerType", customerType);
        }
        else
        {
            setting.setValue("login/isremember", "false");
        }

        //登录成功后显示用户使用界面
        if(customerType==0)//管理员打开使用界面
        {
            ManagerWidget *man = new ManagerWidget;
            this->hide();
            man->show();
        }
    }
}

 这下登录界面的所有工作就做好啦,后续的界面美化等到项目后期再做,先把功能都实现先

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Qt(跨平台的C++图形用户界面应用程序开发框架)可以很好地用于开发商品管理系统商品管理系统通常包括库存管理、商品分类管理、销售管理等功能。 首先,可以使用Qt的GUI设计工具来创建用户界面。通过绘制控件和设置属性,可以实现直观美观的界面,使用户可以方便地输入和查看商品信息。 其次,可以使用Qt的模型视图设计模式来处理和展示商品数据。通过继承Qt的模型类,可以实现自定义的数据模型,用于存储商品信息,并提供一致的界面和数据绑定。利用Qt的视图类,可以实现表格、树形和列表等不同形式的数据展示,方便用户查看和修改商品信息。 另外,Qt还提供了许多实用的类和方法,方便处理商品管理系统中的各种操作。比如,可以使用Qt的数据库模块来连接数据库,实现商品信息的存储和读取。可以使用Qt的文件类来处理文件的读写,实现商品信息的导入和导出功能。 当然,Qt还提供了丰富的信号与槽机制,可以实现用户之间的交互。通过响应不同的事件和信号,可以实现商品的添加、修改、删除等操作,并及时更新界面显示。同时,还可以利用Qt的对话框类,实现弹窗式的提醒和确认功能,方便用户进行操作和决策。 总的来说,Qt提供了强大的工具和框架,使得开发一个商品管理系统变得更加简单和高效。通过合理的设计和优雅的代码,可以实现一个稳定可靠、功能完善的商品管理系统

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值