#include "AccountMaintenanceWnd.h" #include "ui_AccountMaintenanceWnd.h" #include "AddUserAccountWnd.h" #include "Src/common/UserManagementShared.h" AccountMaintenanceWnd::AccountMaintenanceWnd(QWidget* parent) : QMainWindow(parent), ui(new Ui::AccountMaintenanceWnd) { ui->setupUi(this); InitUi(); } AccountMaintenanceWnd::~AccountMaintenanceWnd() { delete ui; } void AccountMaintenanceWnd::InitUi() { QList liUserInfo; //liUserInfo.append({0}); AdditemsToTree(liUserInfo, true); liUserInfo.clear(); JUserAccountsData* pUser = JUserAccountsData::GetInstance(); for(auto& a : pUser->m_veUserAccounts) { liUserInfo.append(a); } AdditemsToTree(liUserInfo); } void AccountMaintenanceWnd::UpdateUserData(UserAccounts _use, bool bRevision) { AddUserAccountWnd wnd; if(bRevision) { wnd.SetDefaultVal(_use); } wnd.exec(); InitUi(); } void AccountMaintenanceWnd::SetTableHeaderStyle() { ui->userTreeView->setAlternatingRowColors(true); ui->userTreeView->setEditTriggers(QTreeView::NoEditTriggers); //单元格不能编辑 ui->userTreeView->setSelectionBehavior(QTreeView::SelectRows); //一次选中整行 ui->userTreeView->setSelectionMode(QTreeView::SingleSelection); //单选,配合上面的整行就是一次选单行 // t->setAlternatingRowColors(true); //每间隔一行颜色不一样,当有qss时该属性无效 ui->userTreeView->setFocusPolicy(Qt::NoFocus); //去掉鼠标移到单元格上时的虚线框 //2,列头相关设置 ui->userTreeView->header()->setHighlightSections(true); //列头点击时字体变粗,去掉该效果 ui->userTreeView->header()->setDefaultAlignment(Qt::AlignLeft); //列头文字默认居中对齐 //ui->userTreeView->header()->setDefaultSectionSize(200); //默认列宽100 //ui->userTreeView->header()->setStretchLastSection(true); //最后一列自适应宽度 //ui->userTreeView->header()->setSortIndicator(0, Qt::AscendingOrder); //按第1列升序排序 ui->userTreeView->header()->setSectionResizeMode(QHeaderView::ResizeToContents); // # 设置表头的高度为固定大小 ui->userTreeView->header()->setMinimumHeight(30); // 设置字体 QFont font = ui->userTreeView->header()->font(); //font.setBold(true); font.setPointSize(14); ui->userTreeView->header()->setFont(font); } void AccountMaintenanceWnd::AdditemsToTree(QList listStrName, bool bCreate) { if(bCreate) { SetTableHeaderStyle(); QStringList headers; // 第一个只能手动对齐了.. 目前没啥好办法 headers << tr("User Name ", "用户名称 ") << tr("Full Name ", "全名 ") << tr("Privilege", "特权"); m_pModel = new QStandardItemModel(ui->userTreeView); m_pModel->setHorizontalHeaderLabels(headers); } else { for(auto& a : listStrName) { QList liTtem; QStandardItem* pItemUser = new QStandardItem(a.UserName); pItemUser->setIcon(QIcon("://image/main/program.png")); QStandardItem* pItemFull = new QStandardItem(a.DisplayName); QString strPrivilegeName; if(a.Privilege == enPrivilegeLevel::Administrator) { strPrivilegeName = tr("Administrator","管理员"); } else if(a.Privilege == enPrivilegeLevel::Engineer) { strPrivilegeName = tr("Engineer","工程师"); } else if(a.Privilege == enPrivilegeLevel::Technician) { strPrivilegeName = tr("Technician","技术员"); } else if(a.Privilege == enPrivilegeLevel::SeniorOperator) { strPrivilegeName = tr("Senior Operator","高级操作员"); } else if(a.Privilege == enPrivilegeLevel::Operator) { strPrivilegeName = tr("Operator","操作员"); } QStandardItem* pItemPrivilege = new QStandardItem(strPrivilegeName); liTtem << pItemUser << pItemFull << pItemPrivilege; m_pModel->appendRow(liTtem); } ui->userTreeView->setModel(m_pModel); } } void AccountMaintenanceWnd::on_addBut_clicked() { UpdateUserData({}, false); } void AccountMaintenanceWnd::on_modifyBut_clicked() { int nRow = ui->userTreeView->currentIndex().row(); if(nRow > -1) { UpdateUserData(JUserAccountsData::GetInstance()->m_veUserAccounts[nRow], true); } InitUi(); } void AccountMaintenanceWnd::on_delBut_clicked() { int nRow = ui->userTreeView->currentIndex().row(); if(nRow > -1) { JUserAccountsData::GetInstance()->m_veUserAccounts.erase( JUserAccountsData::GetInstance()->m_veUserAccounts.begin() + nRow); } InitUi(); }