Files
2024-09-27 14:31:22 +08:00

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();
}