487 lines
18 KiB
C++
487 lines
18 KiB
C++
#include "QtPassword.h"
|
|
|
|
#pragma execution_character_set("utf-8")
|
|
QtPassword::QtPassword(QWidget *parent)
|
|
: QMainWindow(parent)
|
|
{
|
|
ui.setupUi(this);
|
|
|
|
adminPasswordMap.clear();
|
|
operatorPasswordMap.clear();
|
|
authorityUser.clear();
|
|
|
|
ui.label_icon_->setStyleSheet("image: url(./Icon/logo_Dongsheng.png);");
|
|
ui.groupBox_add->hide();
|
|
ui.groupBox_addDelete->hide();
|
|
ui.groupBox_checkAddOrDel->hide();
|
|
ui.groupBox_checkType->hide();
|
|
ui.groupBox_del->hide();
|
|
ui.pushButton_finish->hide();
|
|
ui.del_button->hide();
|
|
ui.add_button->hide();
|
|
this->resize(500, 350);
|
|
|
|
ui.pushButton_close->setText("");
|
|
ui.pushButton_close->setStyleSheet("background-color:transparent;image: url(./Icon/close_n.png);");
|
|
setWindowFlags(Qt::FramelessWindowHint); //隐藏标题栏
|
|
connect(ui.pushButton_close, &QPushButton::clicked, [=]() {
|
|
this->resize(500, 350);
|
|
this->close();
|
|
qApp->processEvents();
|
|
});
|
|
|
|
QDir dir = QApplication::applicationDirPath();
|
|
currPath = dir.path();
|
|
json_password_file_path = currPath + "/config/password.json";
|
|
QFile file1(json_password_file_path);
|
|
if (!file1.exists())
|
|
{
|
|
QJsonObject obj;
|
|
QJsonArray jsonA;
|
|
QJsonObject adminBoj;
|
|
adminBoj.insert("用户名称", "超级用户");
|
|
adminBoj.insert("密码", "123456789");
|
|
jsonA.append(adminBoj);
|
|
obj.insert("管理员", jsonA);
|
|
obj.insert("操作员", jsonA);
|
|
|
|
//内存中的数据写到文件
|
|
QJsonDocument doc(obj);
|
|
//将json对象转换成字符串
|
|
QByteArray data = doc.toJson();
|
|
QFile file("password.json");
|
|
file.open(QIODevice::WriteOnly);
|
|
file.write(data);
|
|
file.close();
|
|
|
|
fileObj = obj;
|
|
authorityUser = "管理员,超级用户";
|
|
adminPasswordMap.insert("超级用户", "123456789");
|
|
operatorPasswordMap.insert("默认用户", "123456789");
|
|
}
|
|
else
|
|
{
|
|
QFile file0("config/password.json");
|
|
file0.open(QIODevice::ReadOnly);
|
|
QByteArray data0 = file0.readAll();
|
|
file0.close();
|
|
//使用json文件对象加载字符串
|
|
QJsonDocument doc0 = QJsonDocument::fromJson(data0);
|
|
//判断是否对象
|
|
if (doc0.isObject())
|
|
{
|
|
fileObj = doc0.object();
|
|
QJsonArray addminArray = fileObj.value("管理员").toArray();
|
|
for (int i = 0; i < addminArray.size(); i++)
|
|
{
|
|
QJsonObject adminBoj = addminArray[i].toObject();
|
|
adminPasswordMap.insert(adminBoj.value("用户名称").toString(), adminBoj.value("密码").toString());
|
|
}
|
|
//ui.comboBox_user->addItem("默认用户");
|
|
foreach(QString userName, adminPasswordMap.keys())
|
|
if (userName != "超级用户")
|
|
ui.comboBox_user->addItem(userName);
|
|
|
|
QJsonArray operatorArray = fileObj.value("操作员").toArray();
|
|
for (int i = 0; i < operatorArray.size(); i++)
|
|
{
|
|
QJsonObject adminBoj = operatorArray[i].toObject();
|
|
operatorPasswordMap.insert(adminBoj.value("用户名称").toString(), adminBoj.value("密码").toString());
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
//管理员/操作员切换
|
|
connect(ui.checkBox_admin, &QCheckBox::clicked, [=]() {
|
|
ui.checkBox_admin->setChecked(true);
|
|
if (ui.checkBox_admin->isChecked())
|
|
{
|
|
ui.comboBox_user->clear();
|
|
ui.comboBox_user->addItem("超级用户");
|
|
foreach(QString userName, adminPasswordMap.keys())
|
|
if (userName != "超级用户")
|
|
ui.comboBox_user->addItem(userName);
|
|
ui.label_deleteUser->setText("管理员:超级用户");
|
|
}
|
|
ui.checkBox_operator->setChecked(false);
|
|
});
|
|
//管理员/操作员切换
|
|
connect(ui.checkBox_operator, &QCheckBox::clicked, [=]() {
|
|
ui.checkBox_operator->setChecked(true);
|
|
if (ui.checkBox_operator->isChecked())
|
|
{
|
|
ui.comboBox_user->clear();
|
|
ui.comboBox_user->addItem("默认用户");
|
|
foreach(QString userName, operatorPasswordMap.keys())
|
|
if (userName != "默认用户")
|
|
ui.comboBox_user->addItem(userName);
|
|
//ui.label_authority->setText("操作员");
|
|
ui.label_deleteUser->setText("操作员:默认用户");
|
|
}
|
|
ui.checkBox_admin->setChecked(false);
|
|
|
|
});
|
|
|
|
ui.pushButton_Login->setStyleSheet("QPushButton{background-color:rgb(68, 74, 80);border-radius:10px;}"
|
|
"QPushButton:hover{ background-color: rgb(0, 0, 0); border:none; color:rgb(255, 255, 255); }");
|
|
//登录
|
|
connect(ui.pushButton_Login, &QPushButton::clicked, [=]() {
|
|
if (!ui.checkBox_admin->isChecked() && !ui.checkBox_operator->isChecked())
|
|
{
|
|
QMessageBox::information(this, "选择权限", "未选择登录权限,请选择! "); return;
|
|
}
|
|
|
|
QString boxUser = ui.comboBox_user->currentText();
|
|
QString password;
|
|
if (ui.checkBox_admin->isChecked())
|
|
password = adminPasswordMap.value(boxUser);
|
|
else
|
|
password = operatorPasswordMap.value(boxUser);
|
|
QString Lpass = ui.lineEdit_password->text();
|
|
if (password != Lpass)
|
|
{
|
|
QMessageBox::information(this, "密码错误", "密码错误,请重新输入! 提示,密码为9位"); return;
|
|
}
|
|
|
|
QString msg;
|
|
if (ui.checkBox_admin->isChecked())
|
|
msg ="管理员:\r\n" + boxUser;
|
|
else
|
|
msg = "操作员:\r\n" + boxUser;
|
|
|
|
ui.lineEdit_password->setText("");
|
|
this->close();
|
|
emit LoginSuccess(msg);
|
|
});
|
|
|
|
//下拉框
|
|
connect(ui.comboBox_user_2, SIGNAL(currentIndexChanged(int)), SLOT(boxIndexChanged(int)));
|
|
|
|
/*connect(ui.lineEdit_adminPassword, &QLineEdit::textChanged, [=]() {
|
|
if (ui.lineEdit_adminPassword->text() == adminPasswordMap.value("默认用户"))
|
|
ui.label_adminPassword->setText("密码状态:正确");
|
|
else
|
|
ui.label_adminPassword->setText("密码状态:错误");
|
|
});*/
|
|
|
|
ui.pushButton_see->setStyleSheet("QPushButton{background-color:rgb(68, 74, 80);border-radius:10px;}"
|
|
"QPushButton:hover{ background-color: rgb(0, 0, 0); border:none; color:rgb(255, 255, 255); }");
|
|
connect(ui.pushButton_see, &QPushButton::pressed, [=]() {
|
|
ui.lineEdit_password->setEchoMode(QLineEdit::Normal);//Normal, NoEcho, Password, PasswordEchoOnEdit
|
|
});
|
|
connect(ui.pushButton_see, &QPushButton::released, [=]() {
|
|
ui.lineEdit_password->setEchoMode(QLineEdit::Password);//Normal, NoEcho, Password, PasswordEchoOnEdit
|
|
});
|
|
|
|
ui.pushButton_addDelete->setStyleSheet("QPushButton{background-color:rgb(68, 74, 80);border-radius:10px;}"
|
|
"QPushButton:hover{ background-color: rgb(0, 0, 0); border:none; color:rgb(255, 255, 255); }");
|
|
//账号管理按钮
|
|
connect(ui.pushButton_addDelete, &QPushButton::clicked, [=]() {
|
|
ui.lineEdit_password->clear();
|
|
ui.groupBox_addDelete->show();
|
|
ui.groupBox_Login->hide();
|
|
ui.pushButton_finish->show();
|
|
this->resize(500, 350);
|
|
});
|
|
|
|
ui.pushButton_see1->setStyleSheet("QPushButton{background-color:rgb(68, 74, 80);border-radius:10px;}"
|
|
"QPushButton:hover{ background-color: rgb(0, 0, 0); border:none; color:rgb(255, 255, 255); }");
|
|
connect(ui.pushButton_see1, &QPushButton::pressed, [=]() {
|
|
ui.lineEdit_adminPassword->setEchoMode(QLineEdit::Normal);//Normal, NoEcho, Password, PasswordEchoOnEdit
|
|
});
|
|
connect(ui.pushButton_see1, &QPushButton::released, [=]() {
|
|
ui.lineEdit_adminPassword->setEchoMode(QLineEdit::Password);//Normal, NoEcho, Password, PasswordEchoOnEdit
|
|
});
|
|
|
|
ui.pushButton_check->setStyleSheet("QPushButton{background-color:rgb(68, 74, 80);border-radius:10px;}"
|
|
"QPushButton:hover{ background-color: rgb(0, 0, 0); border:none; color:rgb(255, 255, 255); }");
|
|
connect(ui.pushButton_check, &QPushButton::clicked, [=]() {
|
|
if (ui.lineEdit_adminPassword->text() == adminPasswordMap.value("超级用户"))
|
|
// ui.label_adminPassword->setText("密码状态:正确");
|
|
{
|
|
this->resize(500, 350);
|
|
ui.groupBox_checkAddOrDel->show();
|
|
|
|
ui.checkBox_admin_2->setChecked(false);
|
|
ui.checkBox_operator_2->setChecked(false);
|
|
}
|
|
else
|
|
QMessageBox::information(this, "密码错误", "密码错误,请重新输入!提示,密码为9位"); return;
|
|
});
|
|
|
|
connect(ui.checkBox_admin_2, &QCheckBox::clicked, [=]() {
|
|
ui.checkBox_admin_2->setChecked(true);
|
|
ui.checkBox_operator_2->setChecked(false);
|
|
if (ui.checkBox_add->isChecked())
|
|
{
|
|
this->resize(500, 700);
|
|
ui.groupBox_del->hide();
|
|
ui.del_button->hide();
|
|
ui.groupBox_add->show();
|
|
ui.add_button->show();
|
|
}
|
|
else
|
|
{
|
|
this->resize(500, 700);
|
|
ui.groupBox_add->hide();
|
|
ui.add_button->hide();
|
|
ui.groupBox_del->show();
|
|
ui.del_button->show();
|
|
}
|
|
if (ui.checkBox_admin_2->isChecked())
|
|
{
|
|
ui.comboBox_user_2->clear();
|
|
ui.comboBox_user_2->addItem("超级用户");
|
|
foreach(QString userName, adminPasswordMap.keys())
|
|
if (userName != "超级用户")
|
|
ui.comboBox_user_2->addItem(userName);
|
|
}
|
|
else
|
|
{
|
|
ui.comboBox_user_2->clear();
|
|
ui.comboBox_user_2->addItem("默认用户");
|
|
foreach(QString userName, operatorPasswordMap.keys())
|
|
if (userName != "默认用户")
|
|
ui.comboBox_user_2->addItem(userName);
|
|
}
|
|
});
|
|
connect(ui.checkBox_operator_2, &QCheckBox::clicked, [=]() {
|
|
ui.checkBox_operator_2->setChecked(true);
|
|
ui.checkBox_admin_2->setChecked(false);
|
|
if (ui.checkBox_add->isChecked())
|
|
{
|
|
ui.groupBox_del->hide();
|
|
ui.del_button->hide();
|
|
ui.groupBox_add->show();
|
|
ui.add_button->show();
|
|
}
|
|
else
|
|
{
|
|
ui.groupBox_add->hide();
|
|
ui.add_button->hide();
|
|
ui.groupBox_del->show();
|
|
ui.del_button->show();
|
|
}
|
|
if (ui.checkBox_admin_2->isChecked())
|
|
{
|
|
ui.comboBox_user_2->clear();
|
|
ui.comboBox_user_2->addItem("超级用户");
|
|
foreach(QString userName, adminPasswordMap.keys())
|
|
if (userName != "超级用户")
|
|
ui.comboBox_user_2->addItem(userName);
|
|
}
|
|
else
|
|
{
|
|
ui.comboBox_user_2->clear();
|
|
ui.comboBox_user_2->addItem("默认用户");
|
|
foreach(QString userName, operatorPasswordMap.keys())
|
|
if (userName != "默认用户")
|
|
ui.comboBox_user_2->addItem(userName);
|
|
}
|
|
});
|
|
|
|
connect(ui.checkBox_add, &QCheckBox::clicked, [=]() {
|
|
ui.checkBox_add->setChecked(true);
|
|
ui.checkBox_delete->setChecked(false);
|
|
ui.checkBox_operator_2->setChecked(false);
|
|
ui.checkBox_admin_2->setChecked(false);
|
|
ui.groupBox_checkType->show();
|
|
ui.groupBox_del->hide();
|
|
ui.groupBox_add->hide();
|
|
ui.del_button->hide();
|
|
ui.add_button->hide();
|
|
});
|
|
|
|
connect(ui.checkBox_delete, &QCheckBox::clicked, [=]() {
|
|
ui.checkBox_delete->setChecked(true);
|
|
ui.checkBox_add->setChecked(false);
|
|
ui.checkBox_operator_2->setChecked(false);
|
|
ui.checkBox_admin_2->setChecked(false);
|
|
ui.groupBox_checkType->show();
|
|
ui.groupBox_del->hide();
|
|
ui.groupBox_add->hide();
|
|
ui.del_button->hide();
|
|
ui.add_button->hide();
|
|
});
|
|
|
|
ui.pushButton_add->setStyleSheet("QPushButton{background-color:rgb(68, 74, 80);border-radius:10px;}"
|
|
"QPushButton:hover{ background-color: rgb(0, 0, 0); border:none; color:rgb(255, 255, 255); }");
|
|
//增加
|
|
connect(ui.pushButton_add, &QPushButton::clicked, [=]() {
|
|
QString addUser = ui.lineEdit_addUser->text();
|
|
if (addUser.isEmpty())// || ui.lineEdit_addPassword->text().isEmpty())
|
|
{
|
|
QMessageBox::information(this, "内容为空", "用户/工号为空,请输入"); return;
|
|
}
|
|
else if (adminPasswordMap.keys().contains(addUser)
|
|
|| operatorPasswordMap.keys().contains(addUser) )
|
|
{
|
|
QMessageBox::information(this, "内容重复", "用户/工号重复,请重新输入"); return;
|
|
}
|
|
QString addPassword = ui.lineEdit_addPassword->text();
|
|
if (addPassword.isEmpty())// || ui.lineEdit_addPassword->text().isEmpty())//ui.lineEdit_addPassword->text().isEmpty()
|
|
{
|
|
QMessageBox::information(this, "内容为空", "密码为空,请输入"); return;
|
|
}
|
|
if (addPassword.size()!=9)
|
|
{
|
|
QMessageBox::information(this, "密码长度错误", "密码长度不为9,请重新输入"); return;
|
|
}
|
|
if (addPassword != ui.lineEdit_addPassword2->text())
|
|
{
|
|
QMessageBox::information(this, "密码不匹配", "两次密码不相同,请重新输入"); return;
|
|
}
|
|
|
|
|
|
QString authority = "操作员";;
|
|
if (ui.checkBox_admin_2->isChecked())
|
|
{
|
|
authority = "管理员";
|
|
adminPasswordMap.insert(addUser, addPassword);
|
|
}
|
|
else
|
|
{
|
|
operatorPasswordMap.insert(addUser, addPassword);
|
|
}
|
|
ui.comboBox_user->addItem(addUser);
|
|
|
|
savePasswordJson();
|
|
QMessageBox::information(this, "增加成功", "增加用户及密码,成功!");
|
|
|
|
ui.lineEdit_addPassword2->clear();
|
|
ui.lineEdit_addPassword->clear();
|
|
ui.lineEdit_addUser->clear();
|
|
});
|
|
|
|
ui.pushButton_delete->setStyleSheet("QPushButton{background-color:rgb(68, 74, 80);border-radius:10px;}"
|
|
"QPushButton:hover{ background-color: rgb(0, 0, 0); border:none; color:rgb(255, 255, 255); }");
|
|
//删除
|
|
connect(ui.pushButton_delete, &QPushButton::clicked, [=]() {
|
|
QString boxUser = ui.comboBox_user_2->currentText();
|
|
if (boxUser == "默认用户" || boxUser == "超级用户")
|
|
{
|
|
QMessageBox::information(this, "默认用户", "默认用户,不可删除!"); return;
|
|
}
|
|
QMessageBox::StandardButton A = QMessageBox::question(this, "确认", "是否删除该用户?", QMessageBox::Yes | QMessageBox::No, QMessageBox::No);//创建一个二次确认框
|
|
if (A == QMessageBox::Yes)
|
|
{
|
|
QString authority = "操作员";;
|
|
if (ui.checkBox_admin_2->isChecked())
|
|
adminPasswordMap.remove(boxUser);
|
|
else
|
|
operatorPasswordMap.remove(boxUser);
|
|
ui.comboBox_user_2->removeItem(ui.comboBox_user_2->currentIndex());
|
|
savePasswordJson();
|
|
}
|
|
});
|
|
|
|
ui.pushButton_finish->setStyleSheet("QPushButton{background-color:rgb(68, 74, 80);border-radius:10px;}"
|
|
"QPushButton:hover{ background-color: rgb(0, 0, 0); border:none; color:rgb(255, 255, 255); }");
|
|
connect(ui.pushButton_finish, &QPushButton::clicked, [=]() {
|
|
ui.checkBox_admin_2->setChecked(false);
|
|
ui.checkBox_operator_2->setChecked(false);
|
|
ui.checkBox_add->setChecked(false);
|
|
ui.checkBox_delete->setChecked(false);
|
|
|
|
ui.lineEdit_addPassword2->clear();
|
|
ui.lineEdit_addPassword->clear();
|
|
ui.lineEdit_addUser->clear();
|
|
ui.lineEdit_adminPassword->clear();
|
|
ui.comboBox_user_2->clear();
|
|
|
|
|
|
ui.groupBox_add->hide();
|
|
ui.groupBox_addDelete->hide();
|
|
ui.groupBox_checkAddOrDel->hide();
|
|
ui.groupBox_checkType->hide();
|
|
ui.groupBox_del->hide();
|
|
ui.del_button->hide();
|
|
ui.add_button->hide();
|
|
|
|
ui.groupBox_Login->show();
|
|
ui.pushButton_finish->hide();
|
|
ui.comboBox_user->clear();
|
|
|
|
ui.checkBox_admin->setChecked(false);
|
|
ui.checkBox_operator->setChecked(false);
|
|
this->resize(500, 350);
|
|
});
|
|
|
|
}
|
|
|
|
void QtPassword::savePasswordJson()
|
|
{
|
|
//保存json
|
|
QJsonObject obj;
|
|
QJsonArray jsonA, jsonB;
|
|
foreach(QString user, adminPasswordMap.keys())
|
|
{
|
|
QJsonObject adminBoj;
|
|
adminBoj.insert("用户名称", user);
|
|
adminBoj.insert("密码", adminPasswordMap.value(user));
|
|
jsonA.append(adminBoj);
|
|
}
|
|
obj.insert("管理员", jsonA);
|
|
|
|
foreach(QString user, operatorPasswordMap.keys())
|
|
{
|
|
QJsonObject userObj;
|
|
userObj.insert("用户名称", user);
|
|
userObj.insert("密码", operatorPasswordMap.value(user));
|
|
jsonB.append(userObj);
|
|
}
|
|
obj.insert("操作员", jsonB);
|
|
|
|
//内存中的数据写到文件
|
|
QJsonDocument doc(obj);
|
|
//将json对象转换成字符串
|
|
QByteArray data = doc.toJson();
|
|
QFile file("config/password.json");
|
|
file.open(QIODevice::WriteOnly);
|
|
file.write(data);
|
|
file.close();
|
|
|
|
fileObj = obj;
|
|
}
|
|
void QtPassword::boxIndexChanged(int index)
|
|
{
|
|
if (ui.checkBox_admin_2->isChecked())
|
|
ui.label_deleteUser->setText("管理员:" + ui.comboBox_user_2->currentText());
|
|
else
|
|
ui.label_deleteUser->setText("操作员:" + ui.comboBox_user_2->currentText());
|
|
}
|
|
QString QtPassword::getUser()
|
|
{
|
|
return authorityUser;
|
|
}
|
|
QtPassword::~QtPassword()
|
|
{}
|
|
|
|
// c.重写鼠标事件
|
|
//鼠标移动事件
|
|
void QtPassword::mouseMoveEvent(QMouseEvent* event)
|
|
{
|
|
if (!ui.title->underMouse())
|
|
return;
|
|
//移动窗口
|
|
this->move(this->x() + (event->globalX() - m_lastPos.x()), this->y() + (event->globalY() - m_lastPos.y()));
|
|
//记录窗口坐标
|
|
m_lastPos = event->globalPos();
|
|
}
|
|
//鼠标按下事件
|
|
void QtPassword::mousePressEvent(QMouseEvent* event)
|
|
{
|
|
if (!ui.title->underMouse())
|
|
return;
|
|
//记录鼠标按下时的窗口坐标
|
|
m_lastPos = event->globalPos();
|
|
}
|
|
//鼠标松开事件
|
|
void QtPassword::mouseReleaseEvent(QMouseEvent* event)
|
|
{
|
|
if (!ui.title->underMouse())
|
|
return;
|
|
//记录鼠标松开时窗口的坐标
|
|
m_lastPos = event->globalPos();
|
|
} |