userbackstage.cpp 3.9 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136
#include "userbackstage.h"
#include "ui_userbackstage.h"
#include <QDebug>
#include <qmessagebox.h>
#include <qsqlquery.h>

UserBackstage::UserBackstage(QWidget *parent) :
    QDialog(parent),
    ui(new Ui::UserBackstage)
{
    ui->setupUi(this);

    m_model = new QSqlTableModel(this);
    m_model->setTable("User");                                // 设置需要显示的数据库表
    ui->tableView->setEditTriggers(QAbstractItemView::NoEditTriggers);
    m_model->setHeaderData(0, Qt::Horizontal, "ID");
    m_model->setHeaderData(1, Qt::Horizontal, "用户名");
    m_model->setHeaderData(2, Qt::Horizontal, "密码");
    m_model->setHeaderData(3, Qt::Horizontal, "用户类型");
    ui->tableView->setModel(m_model);

    m_model->select();                                         // 获取数据库中的数据
    ui->tableView->resizeColumnsToContents();                  // 根据表格中的内容自动调整列宽
}

UserBackstage::~UserBackstage()
{
    delete ui;
}

/**
 * @brief       设置登录的用户类型
 * @param type
 */
void UserBackstage::setUserType(UserBackstage::UserType type)
{
    m_userType = type;

    // 添加用户类型
    ui->com_type->clear();
    switch (type)
    {
    case User:
    {
        break;
    }
    case Admin:
    {
        ui->com_type->addItem("普通用户", User);
        m_model->setFilter(QString("type = '%1'").arg(int(User)));     // 只显示普通用户的信息
        break;
    }
    case Root:
    {
        ui->com_type->addItem("普通用户", User);
        ui->com_type->addItem("管理员", Admin);
        break;
    }
    }
}

/**
 * @brief 设置用户信息
 */
void UserBackstage::on_but_set_clicked()
{
    QString userName = ui->line_user->text().trimmed();
    QString password = ui->line_password->text().trimmed();
    UserType userType = UserType(ui->com_type->currentIndex());
    if(userName.isEmpty())
    {
        QMessageBox::about(this, "注意!", "用户名不能为空");
        return;
    }
    if(password.isEmpty())
    {
        QMessageBox::about(this, "注意!", "用户密码不能为空");
        return;
    }

    QSqlQuery query;
    QString sql = QString("select * from User where userName = '%1';").arg(userName);  // 查询用户
    if(query.exec(sql))
    {
        if(query.next())   // true则用户存在则更新数据
        {
            int type = query.value("type").toInt();
            if(type >= m_userType)         // 如果修改的用户等级超过登录用户等级,则修改失败
            {
                return;
            }
            sql = QString("update User set password='%1', type=%2  where userName = '%3';")
                    .arg(password)
                    .arg(int(userType))
                    .arg(userName);
            query.exec(sql);
        }
        else               // 用户不存在则插入数据
        {
            query.prepare("insert into User(userName, password, type)"
                          "values (:userName, :password, :type)");
            query.bindValue(":userName", userName);
            query.bindValue(":password", password);
            query.bindValue(":type", int(userType));
            query.exec();
        }
        m_model->select();                                         // 获取数据库中的数据
    }
    else
    {
        qDebug() << "指令执行失败";
    }
}

/**
 * @brief 删除用户信息
 */
void UserBackstage::on_but_delete_clicked()
{
    QString userName = ui->line_user->text().trimmed();
    if(userName.isEmpty())
    {
        QMessageBox::about(this, "注意!", "用户名不能为空");
        return;
    }
    QSqlQuery query;
    QString sql = QString("delete from User where userName = '%1';").arg(userName);  // 查询用户
    if(query.exec(sql))
    {
        m_model->select();                                         // 获取数据库中的数据
    }
    else
    {
        qDebug() << "指令执行失败";
    }
}