diff --git a/CMakeLists.txt b/CMakeLists.txt index 153c556..6c00e95 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -134,6 +134,9 @@ set(SHARED_SOURCES view/EquipmentClass/equipmentclassblock.cpp view/EquipmentClass/equipmentclassblock.h view/EquipmentClass/equipmentclassblock.ui + view/RegisterCenter/checkuserblock.cpp + view/RegisterCenter/checkuserblock.h + view/RegisterCenter/checkuserblock.ui view/equipmentManage/equipment_home.cpp view/equipmentManage/equipment_home.h view/equipmentManage/equipment_home.ui diff --git a/main.cpp b/main.cpp index f1a8b7f..ec93ff0 100644 --- a/main.cpp +++ b/main.cpp @@ -19,6 +19,7 @@ #include "view/loginPage/registerpage.h" #include "view/messageCenter/messagewindow.h" #include "view/equipmentManage/equipment_home.h" +#include "view/RegisterCenter/checknewuser.h" #include "view/SplashScreen/nativesplash.h" //#include "view/SplashScreen/splashscreen.h" @@ -35,8 +36,8 @@ int main(int argc, char *argv[]) { qInstallMessageHandler(service::customMessageHandler); //拦截部分错误,真的修不好了喵眼不见心不烦 - view::SplashScreen::nativeSplash splash; - splash.show(); + //view::SplashScreen::SplashScreen splash; + //splash.show(); service::logger::instance().setLogFile( @@ -49,7 +50,7 @@ int main(int argc, char *argv[]) { service::initDB(); - view::login::loginPage b; + // QFile styleFile(":/styles/fluent.qss"); // if (styleFile.open(QFile::ReadOnly | QFile::Text)) { // QString styleSheet = QLatin1String(styleFile.readAll()); @@ -58,8 +59,9 @@ int main(int argc, char *argv[]) { // } else { // log(LogLevel::ERR) << "无法加载样式表文件: " << styleFile.fileName(); // } - b.show(); + view::login::loginPage b; + b.show(); //splash.close(); setup_tasks(); diff --git a/module/data/data_UserControl.cpp b/module/data/data_UserControl.cpp index 420ad06..482897c 100644 --- a/module/data/data_UserControl.cpp +++ b/module/data/data_UserControl.cpp @@ -79,6 +79,12 @@ namespace data::UserControl { QString storedPassword = row["password"].toString(); QString status = row["status"].toString(); + bool issys = permission::isUserInGroup(userId, "System"); + if (issys) { + log(service::LogLevel::ERR) << "登录失败。用户属于系统: " << idNumber; + return std::unexpected(UserControlError::UserNotFound); + } + if (status != "AllRight") { log(service::LogLevel::ERR) << "登录失败。用户状态异常: " << idNumber << " status: " << status; return std::unexpected(UserControlError::UserNotFound); @@ -493,4 +499,138 @@ namespace data::UserControl { return groupsMap; } } + namespace check { + QList getAllUserId(int page, int pageSize) { + service::DatabaseManager db(service::Path::user()); + QString query = R"( + SELECT id FROM users WHERE status != 'Deleted' AND id_number NOT LIKE '-%' + ORDER BY created_at DESC + LIMIT ? OFFSET ? + )"; + QVariantList params; + params << pageSize << (page - 1) * pageSize; + + auto results = db.executePreparedQueryAndFetchAll(query, params); + QList userIds; + for (const auto &row: results) { + userIds.append(row["id"].toInt()); + } + return userIds; + } + + QList getUncheckedUserId(int page, int pageSize) { + service::DatabaseManager db(service::Path::user()); + QString query = R"( + SELECT id FROM users WHERE status == 'Unchecked' AND id_number NOT LIKE '-%' + ORDER BY created_at DESC + LIMIT ? OFFSET ? + )"; + int offset = (page - 1) * pageSize; + auto results = db.executePreparedQueryAndFetchAll(query, {pageSize, offset}); + QList userIds; + for (const auto &row: results) { + userIds.append(row["id"].toInt()); + } + return userIds; + } + + QList getAllUserId() { + service::DatabaseManager db(service::Path::user()); + QString query = R"( + SELECT id FROM users WHERE status != 'Deleted' AND id_number NOT LIKE '-%' + )"; + auto results = db.executePreparedQueryAndFetchAll(query, {}); + QList userIds; + for (const auto &row: results) { + userIds.append(row["id"].toInt()); + } + return userIds; + } + + QList getUncheckedUserId() { + service::DatabaseManager db(service::Path::user()); + QString query = R"( + SELECT id FROM users WHERE status == 'Unchecked' AND id_number NOT LIKE '-%' + )"; + auto results = db.executePreparedQueryAndFetchAll(query, {}); + QList userIds; + for (const auto &row: results) { + userIds.append(row["id"].toInt()); + } + return userIds; + } + + int getUncheckedUserCount() { + service::DatabaseManager db(service::Path::user()); + QString query = R"( + SELECT COUNT(*) as count FROM users WHERE status == 'Unchecked' + )"; + auto results = db.executePreparedQueryAndFetchAll(query, {}); + + if (!results.isEmpty()) { + return results.first()["count"].toInt(); + } + + return 0; + } + + int getAllUserCount() { + service::DatabaseManager db(service::Path::user()); + QString query = R"( + SELECT COUNT(*) as count FROM users WHERE status != 'Deleted' + )"; + auto results = db.executePreparedQueryAndFetchAll(query, {}); + + if (!results.isEmpty()) { + return results.first()["count"].toInt(); + } + + return 0; + } + + bool allowUserRegister(int userId) { + service::DatabaseManager db(service::Path::user()); + QString query = R"( + UPDATE users SET status = 'AllRight' WHERE id = ? AND status = 'Unchecked' + )"; + if (!db.executePreparedNonQuery(query, {userId})) { + return false; + } + return true; + } + + bool banUser(int userId) { + service::DatabaseManager db(service::Path::user()); + QString query = R"( + UPDATE users SET status = 'Banned' WHERE id = ? + )"; + if (!db.executePreparedNonQuery(query, {userId})) { + return false; + } + return true; + } + + bool unbanUser(int userId) { + service::DatabaseManager db(service::Path::user()); + QString query = R"( + UPDATE users SET status = 'AllRight' WHERE id = ? AND status = 'Banned' + )"; + if (!db.executePreparedNonQuery(query, {userId})) { + return false; + } + return true; + } + + QString getUserStatus(int userId) { + service::DatabaseManager db(service::Path::user()); + QString query = R"( + SELECT status FROM users WHERE id = ? + )"; + auto results = db.executePreparedQueryAndFetchAll(query, {userId}); + if (results.isEmpty()) { + return QString(); + } + return results.first()["status"].toString(); + } + } } diff --git a/module/data/data_UserControl.h b/module/data/data_UserControl.h index ae69c76..554984a 100644 --- a/module/data/data_UserControl.h +++ b/module/data/data_UserControl.h @@ -25,6 +25,15 @@ namespace data::UserControl { MutiResultFound }; + struct UserData { + int userId; + int id_number; + QString username; + QList > groups; + QString status; + QDateTime created_at; + }; + inline int currentUserId = -1; // 内建用户组ID字典 @@ -270,6 +279,19 @@ namespace data::UserControl { QMap loadUsersMap(); QMap loadGroupsMap(); } + namespace check { + QList getAllUserId(int page = 1, int itemsPerPage = 10); + QList getUncheckedUserId(int page = 1, int itemsPerPage = 10); + QList getAllUserId(); + QList getUncheckedUserId(); + int getUncheckedUserCount(); + int getAllUserCount(); + bool allowUserRegister(int userId); + bool banUser(int userId); + bool unbanUser(int userId); + + QString getUserStatus(int userId); + } } diff --git a/view/EquipmentClass/equipmentclassmanagehomepage.cpp b/view/EquipmentClass/equipmentclassmanagehomepage.cpp index 98b3901..0e7308b 100644 --- a/view/EquipmentClass/equipmentclassmanagehomepage.cpp +++ b/view/EquipmentClass/equipmentclassmanagehomepage.cpp @@ -31,8 +31,6 @@ EquipmentClassManageHomepage::~EquipmentClassManageHomepage() { } void EquipmentClassManageHomepage::initializeUI() { - // 假设你的.ui文件中QScrollArea内的QWidget的objectName是scrollAreaWidgetContents - // 这与MessageWindow中的messageBoxAreaItem是类似作用 auto *layout = new QVBoxLayout(ui->scrollAreaWidgetContents); layout->setSpacing(5); layout->setAlignment(Qt::AlignTop); @@ -92,6 +90,7 @@ void EquipmentClassManageHomepage::on_addButton_clicked() { } void EquipmentClassManageHomepage::on_refreshButton_clicked() { + m_totalPages = data::UserControl::check::getAllUserCount() / m_itemsPerPage + 1; loadEquipmentClasses(); } diff --git a/view/EquipmentClass/equipmentclassmanagehomepage.ui b/view/EquipmentClass/equipmentclassmanagehomepage.ui index 16d60f5..334c872 100644 --- a/view/EquipmentClass/equipmentclassmanagehomepage.ui +++ b/view/EquipmentClass/equipmentclassmanagehomepage.ui @@ -258,6 +258,16 @@ QPushButton { padding: 8px 16px; font-weight: 600; font-size: 10pt; + } + + QPushButton:hover { /* 鼠标悬停时 */ + background-color: #005FA8; /* 比默认蓝色稍深一点 */ + } + + QPushButton:pressed { /* 按钮按下时 */ + background-color: #004C8C; /* 更深的蓝色 */ + padding-top: 9px; /* 模拟下沉效果 */ + padding-bottom: 7px; } @@ -276,6 +286,15 @@ QPushButton { padding: 8px 16px; font-weight: 600; font-size: 10pt; + } + QPushButton:hover { /* 鼠标悬停时 */ + background-color: #f0f0f0; /* 可以是更浅的颜色 */ + } + + QPushButton:pressed { /* 按钮按下时 */ + background-color: #e0e0e0; /* 可以是更深的颜色 */ + padding-top: 9px; /* 让按钮看起来稍微下沉 */ + padding-bottom: 7px; } diff --git a/view/RegisterCenter/checknewuser.cpp b/view/RegisterCenter/checknewuser.cpp index eb71853..f45ac85 100644 --- a/view/RegisterCenter/checknewuser.cpp +++ b/view/RegisterCenter/checknewuser.cpp @@ -5,15 +5,97 @@ // You may need to build the project (run Qt uic code generator) to get "ui_CheckNewUser.h" resolved #include "checknewuser.h" + +#include "checkuserblock.h" #include "ui_CheckNewUser.h" namespace view::RegisterCenter { CheckNewUser::CheckNewUser(QWidget *parent) : - QWidget(parent), ui(new Ui::CheckNewUser) { + QWidget(parent), ui(new Ui::CheckNewUser), + m_currentPage(1),m_itemsPerPage(10),m_totalPages(){ ui->setupUi(this); + service::style::setMica(this); + + loadDataFromDatabase(m_currentPage); } CheckNewUser::~CheckNewUser() { delete ui; } -} // view::RegisterCenter + +void CheckNewUser::loadDataFromDatabase(int page) { + // --- 分页逻辑初始化 --- + m_currentPage = 1; + // 从数据层获取总页数 + m_totalPages = data::UserControl::check::getAllUserCount() / m_itemsPerPage + 1; + updatePaginationControls(); + + // 从数据库获取设备分类数据 + auto records = data::UserControl::check::getAllUserId(page, m_itemsPerPage); + + ui->scrollAreaWidgetContents->setUpdatesEnabled(false); + + auto *layout = qobject_cast(ui->scrollAreaWidgetContents->layout()); + if (!layout) { + layout = new QVBoxLayout(ui->scrollAreaWidgetContents); + layout->setSpacing(5); + layout->setAlignment(Qt::AlignTop); + layout = qobject_cast(ui->scrollAreaWidgetContents->layout()); + if (!layout) { + log(LogLevel::ERR) << "错误:布局创建后仍然为空!"; + return; // 提前退出以避免崩溃 + } + } + + // 清除现有的消息块 + QLayoutItem *child; + while ((child = layout->takeAt(0)) != nullptr) { + delete child->widget(); + delete child; + } + + // 为每个设备分类记录创建信息块 + for (const auto &record : records) { + auto *block = new CheckUserBlock(record); // 创建信息块实例 + layout->addWidget(block); + } + + // 加载完数据后更新分页控件 + ui->scrollAreaWidgetContents->setUpdatesEnabled(true); + updatePaginationControls(); + ui->label_num->setNum(data::UserControl::check::getAllUserCount()); + ui->label_num_2->setNum(data::UserControl::check::getUncheckedUserCount()); +} + +void CheckNewUser::updatePaginationControls() { + if (m_totalPages == 0) { + ui->pageLabel->setText("0 / 0"); + ui->prevButton->setEnabled(false); + ui->nextButton->setEnabled(false); + return; + } + ui->pageLabel->setText(QString("%1 / %2").arg(m_currentPage).arg(m_totalPages)); +} + + void CheckNewUser::on_prevButton_clicked() { + if (m_currentPage > 1) { + m_currentPage--; + loadDataFromDatabase(m_currentPage); + } + } + + void CheckNewUser::on_nextButton_clicked() { + if (m_currentPage < m_totalPages) { + m_currentPage++; + loadDataFromDatabase(m_currentPage); + } + } + + void CheckNewUser::on_addButton_clicked() { + } + + void CheckNewUser::on_refreshButton_clicked() { + m_totalPages = data::UserControl::check::getAllUserCount() / m_itemsPerPage + 1; + loadDataFromDatabase(); + } +} diff --git a/view/RegisterCenter/checknewuser.h b/view/RegisterCenter/checknewuser.h index 6ba46b8..892dfe9 100644 --- a/view/RegisterCenter/checknewuser.h +++ b/view/RegisterCenter/checknewuser.h @@ -18,9 +18,21 @@ Q_OBJECT public: explicit CheckNewUser(QWidget *parent = nullptr); ~CheckNewUser() override; + void loadDataFromDatabase(int page=1); +private: + void updatePaginationControls(); + +private slots: + void on_prevButton_clicked(); + void on_nextButton_clicked(); + void on_addButton_clicked(); + void on_refreshButton_clicked(); private: Ui::CheckNewUser *ui; + int m_currentPage; + int m_totalPages; + const int m_itemsPerPage = 10; }; } // view::RegisterCenter diff --git a/view/RegisterCenter/checknewuser.ui b/view/RegisterCenter/checknewuser.ui index d009612..4c1730c 100644 --- a/view/RegisterCenter/checknewuser.ui +++ b/view/RegisterCenter/checknewuser.ui @@ -6,60 +6,398 @@ 0 0 - 400 - 476 + 555 + 687 CheckNewUser + + /* ---- 整体页面背景 ---- */ +QWidget#view--EquipmentClass--EquipmentClassManageHomepage { + background-color: #FAFAFA; /* 使用一个非常柔和的灰白色作为背景 */ +} + +/* ---- 全局标签和标题 ---- */ +QLabel { + background-color: transparent; + color: #1F1F1F; + font-family: "Segoe UI Variable", "Microsoft YaHei UI"; +} + +/* 主标题,增加一些底部间距 */ +QLabel#label_Title { + padding-bottom: 10px; +} + + +/* ---- 信息卡片 ---- */ + +/* 中间层(frame_2)增加淡色背景、圆角和内边距 */ +QFrame#frame_2 { + background-color: #F6F6F6; /* 一个非常非常淡的灰色 */ + border: none; + border-radius: 8px; /* 圆角比内层卡片稍大,形成包裹感 */ + padding: 2px; /* 关键:增加一点内边距,让背景色能露出来 */ +} + +/* 将卡片样式应用到最内层的 frame_4 */ +QFrame#frame_4,QFrame#frame_5 { + background-color: #FFFFFF; + border: 1px solid #E5E5E5; /* 微妙的边框,增加立体感 */ + border-radius: 6px; + padding: 10px; +} + + +/* ---- 操作栏 (新建、翻页) ---- */ +QFrame#frame_3 { + background-color: transparent; + border: none; + padding-top: 5px; + padding-bottom: 5px; +} + + + +QPushButton#pushButton:hover { + background-color: #1185E5; +} +QPushButton#pushButton:pressed { + background-color: #006ABC; +} + + +/* ---- 翻页按钮 (次要操作按钮) ---- */ +QPushButton#prevButton, QPushButton#nextButton { + background-color: transparent; + color: #3B3B3B; + border: 0px solid #E5E5E5; + border-radius: 4px; + font-weight: 600; + /* 固定大小,使其看起来更像图标按钮 */ + min-width: 32px; + max-width: 32px; + min-height: 32px; + max-height: 32px; +} +QPushButton#prevButton:hover, QPushButton#nextButton:hover { + background-color: #E5E5E5; + border-color: #D0D0D0; +} +QPushButton#prevButton:pressed, QPushButton#nextButton:pressed { + background-color: #D0D0D0; + border-color: #C2C2C2; + color: #1F1F1F; +} + +/* 页码标签 */ +QLabel#pageLabel { + font-weight: 600; + padding-left: 8px; + padding-right: 8px; +} + + +/* ---- 滚动区域 ---- */ +QScrollArea#messageBoxArea { + background-color: transparent; + border: none; /* 移除滚动区域自身的边框 */ +} + +/* 滚动区域的内容QWidget,也设为透明,让里面的卡片自己决定背景 */ +QWidget#scrollAreaWidgetContents { + background-color: transparent; +} + + +/* ---- 全局滚动条美化 ---- */ +QScrollBar:vertical { + border: none; + background: transparent; + width: 8px; + margin: 0px; +} +QScrollBar::handle:vertical { + background: #D0D0D0; + border-radius: 4px; + min-height: 25px; +} +QScrollBar::handle:vertical:hover { + background: #A0A0A0; +} +QScrollBar::add-line:vertical, QScrollBar::sub-line:vertical { + height: 0px; +} +QScrollBar::add-page:vertical, QScrollBar::sub-page:vertical { + background: none; +} + - + + + + Segoe UI Variable + 20 + false + true + + - TextLabel + 注册管理 - + QFrame::Shape::StyledPanel QFrame::Shadow::Raised - + - - - TextLabel + + + + 75 + 0 + + + + + 100 + 16777215 + + + QFrame::Shape::StyledPanel + + + QFrame::Shadow::Raised + + + + + + + Segoe UI Variable + 16 + false + true + + + + Qt::LayoutDirection::LeftToRight + + + 0 + + + Qt::AlignmentFlag::AlignCenter + + + + + + + + Segoe UI Variable + 12 + false + + + + 总数 + + + Qt::AlignmentFlag::AlignCenter + + + + - - - TextLabel + + + + 75 + 0 + + + + + 100 + 16777215 + + + + QFrame::Shape::StyledPanel + + + QFrame::Shadow::Raised + + + + + + Segoe UI Variable + 16 + false + true + + + + Qt::LayoutDirection::LeftToRight + + + 0 + + + Qt::AlignmentFlag::AlignCenter + + + + + + + + Segoe UI Variable + 12 + false + + + + 待审批 + + + Qt::AlignmentFlag::AlignCenter + + + + + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + - + QFrame::Shape::StyledPanel QFrame::Shadow::Raised - + + + + + /* ---- “新建”按钮 (主操作按钮) ---- */ +QPushButton { + background-color: #0078D4; + color: white; + border: none; + border-radius: 4px; + padding: 8px 16px; + font-weight: 600; + font-size: 10pt; + } + + QPushButton:hover { /* 鼠标悬停时 */ + background-color: #005FA8; /* 比默认蓝色稍深一点 */ + } + + QPushButton:pressed { /* 按钮按下时 */ + background-color: #004C8C; /* 更深的蓝色 */ + padding-top: 9px; /* 模拟下沉效果 */ + padding-bottom: 7px; +} + + + 新建 + + + + + + + QPushButton { + background-color: white; + color: black; + border: none; + border-radius: 4px; + padding: 8px 16px; + font-weight: 600; + font-size: 10pt; + } + QPushButton:hover { /* 鼠标悬停时 */ + background-color: #f0f0f0; /* 可以是更浅的颜色 */ + } + + QPushButton:pressed { /* 按钮按下时 */ + background-color: #e0e0e0; /* 可以是更深的颜色 */ + padding-top: 9px; /* 让按钮看起来稍微下沉 */ + padding-bottom: 7px; +} + + + 刷新 + + + + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + + + + + < + + + + + + + 1 / 5 + + + Qt::AlignmentFlag::AlignCenter + + + - + - PushButton + > @@ -67,7 +405,7 @@ - + true @@ -76,8 +414,8 @@ 0 0 - 380 - 320 + 537 + 426 diff --git a/view/RegisterCenter/checkuserblock.cpp b/view/RegisterCenter/checkuserblock.cpp new file mode 100644 index 0000000..fe6eea6 --- /dev/null +++ b/view/RegisterCenter/checkuserblock.cpp @@ -0,0 +1,127 @@ +// +// Created by gouzuang on 25-7-13. +// + +// You may need to build the project (run Qt uic code generator) to get "ui_CheckUserBlock.h" resolved + +#include "checkuserblock.h" +#include "ui_CheckUserBlock.h" + +namespace view::RegisterCenter { + CheckUserBlock::CheckUserBlock(int userId, QWidget *parent): QWidget(parent), ui(new Ui::CheckUserBlock), + userId(userId), acceptButton("接受", this), + rejectButton("拒绝", this), + label_status("状态: ", this) { + ui->setupUi(this); + acceptButton.setVisible(false); + rejectButton.setVisible(false); + label_status.setVisible(false); + setButtonStyle(); + + auto name = data::UserControl::UserInfo::getUserNameById(userId); + if (name.has_value()) { + ui->label_name->setText(name.value()); + } else { + ui->label_name->setText("未设置名称的用户"); + } + ui->label_id->setText(QString::number(userId)); + ui->label_group->setText(data::UserControl::permission::getUserInWhichGroup(userId)); + + if (data::UserControl::check::getUserStatus(userId) == "Unchecked") { + addCheckButton(); + } else { + addStatusString(); + } + + connect(&acceptButton, &QPushButton::clicked, this, &CheckUserBlock::AcceptCheck); + } + + CheckUserBlock::~CheckUserBlock() { + delete ui; + } + + void CheckUserBlock::addCheckButton() { + ui->StatusFrame->layout()->addWidget(&acceptButton); + ui->StatusFrame->layout()->addWidget(&rejectButton); + acceptButton.setVisible(true); + rejectButton.setVisible(true); + } + + void CheckUserBlock::addStatusString(QString status) { + ui->StatusFrame->layout()->addWidget(&label_status); + label_status.setText(status); + label_status.setVisible(true); + } + + void CheckUserBlock::addStatusString() { + auto status = data::UserControl::check::getUserStatus(userId); + ui->StatusFrame->layout()->addWidget(&label_status); + if (status == "Unchecked") { + label_status.setText("未审核"); + } else if (status == "Accepted") { + label_status.setText("已通过"); + } else if (status == "AllRight") { + label_status.setText("一切正常"); + } else { + label_status.setText("未知状态"); + } + label_status.setVisible(true); + } + + void CheckUserBlock::setButtonStyle() { + QString styleSheet1 = R"( + QPushButton { + background-color: #0078D4; + color: white; + border: none; + border-radius: 4px; + padding: 8px 16px; + font-weight: 600; + font-size: 10pt; + } + QPushButton:hover { /* 鼠标悬停时 */ + background-color: #005FA8; /* 比默认蓝色稍深一点 */ + } + + QPushButton:pressed { /* 按钮按下时 */ + background-color: #004C8C; /* 更深的蓝色 */ + padding-top: 9px; /* 模拟下沉效果 */ + padding-bottom: 7px; + } + + )"; + acceptButton.setStyleSheet(styleSheet1); + QString styleSheet2 = R"( + QPushButton { + background-color: white; + color: black; + border: none; + border-radius: 4px; + padding: 8px 16px; + font-weight: 600; + font-size: 10pt; + } + + QPushButton:hover { /* 鼠标悬停时 */ + background-color: #f0f0f0; /* 可以是更浅的颜色 */ + } + + QPushButton:pressed { /* 按钮按下时 */ + background-color: #e0e0e0; /* 可以是更深的颜色 */ + padding-top: 9px; /* 让按钮看起来稍微下沉 */ + padding-bottom: 7px; + } + )"; + rejectButton.setStyleSheet(styleSheet2); + } + + void CheckUserBlock::AcceptCheck() { + if (data::UserControl::check::allowUserRegister(userId)) { + acceptButton.setVisible(false); + rejectButton.setVisible(false); + addStatusString("审批成功"); + } else { + acceptButton.setText("通过失败"); + } + } +} // view::RegisterCenter diff --git a/view/RegisterCenter/checkuserblock.h b/view/RegisterCenter/checkuserblock.h new file mode 100644 index 0000000..4ebb9f9 --- /dev/null +++ b/view/RegisterCenter/checkuserblock.h @@ -0,0 +1,46 @@ +// +// Created by gouzuang on 25-7-13. +// + +#ifndef CHECKUSERBLOCK_H +#define CHECKUSERBLOCK_H + +#include +#include + +namespace view::RegisterCenter { +QT_BEGIN_NAMESPACE +namespace Ui { class CheckUserBlock; } +QT_END_NAMESPACE + +class CheckUserBlock : public QWidget { +Q_OBJECT + +public: +explicit CheckUserBlock(QWidget *parent = nullptr) = delete; + +explicit CheckUserBlock(int userId, QWidget *parent = nullptr); + +~CheckUserBlock() override; + + void addCheckButton(); + +void addStatusString(QString status); + +void addStatusString(); + +void setButtonStyle(); + +public slots: +void AcceptCheck(); + +private: +Ui::CheckUserBlock *ui; + int userId; + QPushButton acceptButton, + rejectButton; +QLabel label_status; +}; +} // view::RegisterCenter + +#endif //CHECKUSERBLOCK_H diff --git a/view/RegisterCenter/checkuserblock.ui b/view/RegisterCenter/checkuserblock.ui new file mode 100644 index 0000000..85c17a8 --- /dev/null +++ b/view/RegisterCenter/checkuserblock.ui @@ -0,0 +1,137 @@ + + + view::RegisterCenter::CheckUserBlock + + + + 0 + 0 + 498 + 295 + + + + CheckUserBlock + + + + + + + 0 + 0 + + + + + 100 + 100 + + + + + 16777215 + 100 + + + + QPushButton#frame { + /* 设置背景颜色 */ + background-color: #F3F2F1; + + /* 关键:设置圆角半径,这里设为 8px,你可以根据需要调整 */ + border-radius: 8px; + + /* 设置一个细微的边框,使其看起来更清晰 */ + border: 1px solid #E1DFDD; + } + + /* 鼠标悬停时的效果,可以增加一些交互感 */ + QPushButton#frame:hover { + background-color: #E1DFDD; + } + + QPushButton#frame QLabel { + background-color: transparent; + border: none; /* 同时最好也禁用边框 */ + } + + + + + + + + + + 14 + true + + + + 姓名 + + + + + + + 学工号 + + + + + + + + + + Microsoft YaHei UI + 10 + + + + 用户组 + + + + + + + + + + + + 150 + 16777215 + + + + QFrame { + /* 设置背景颜色 */ + background-color: transparent; + + /* 关键:设置圆角半径,这里设为 8px,你可以根据需要调整 */ + border-radius: 8px; + } + + + + + QFrame::Shape::StyledPanel + + + QFrame::Shadow::Raised + + + + + + + + + + + +