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