AccountMaintenanceWnd.cpp 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. #include "AccountMaintenanceWnd.h"
  2. #include "ui_AccountMaintenanceWnd.h"
  3. #include "AddUserAccountWnd.h"
  4. #include "Src/common/UserManagementShared.h"
  5. AccountMaintenanceWnd::AccountMaintenanceWnd(QWidget* parent) :
  6. QMainWindow(parent),
  7. ui(new Ui::AccountMaintenanceWnd)
  8. {
  9. ui->setupUi(this);
  10. InitUi();
  11. }
  12. AccountMaintenanceWnd::~AccountMaintenanceWnd()
  13. {
  14. delete ui;
  15. }
  16. void AccountMaintenanceWnd::InitUi()
  17. {
  18. QList<UserAccounts> liUserInfo;
  19. //liUserInfo.append({0});
  20. AdditemsToTree(liUserInfo, true);
  21. liUserInfo.clear();
  22. JUserAccountsData* pUser = JUserAccountsData::GetInstance();
  23. for(auto& a : pUser->m_veUserAccounts)
  24. {
  25. liUserInfo.append(a);
  26. }
  27. AdditemsToTree(liUserInfo);
  28. }
  29. void AccountMaintenanceWnd::UpdateUserData(UserAccounts _use, bool bRevision)
  30. {
  31. AddUserAccountWnd wnd;
  32. if(bRevision)
  33. {
  34. wnd.SetDefaultVal(_use);
  35. }
  36. wnd.exec();
  37. InitUi();
  38. }
  39. void AccountMaintenanceWnd::SetTableHeaderStyle()
  40. {
  41. ui->userTreeView->setAlternatingRowColors(true);
  42. ui->userTreeView->setEditTriggers(QTreeView::NoEditTriggers); //单元格不能编辑
  43. ui->userTreeView->setSelectionBehavior(QTreeView::SelectRows); //一次选中整行
  44. ui->userTreeView->setSelectionMode(QTreeView::SingleSelection); //单选,配合上面的整行就是一次选单行
  45. // t->setAlternatingRowColors(true); //每间隔一行颜色不一样,当有qss时该属性无效
  46. ui->userTreeView->setFocusPolicy(Qt::NoFocus); //去掉鼠标移到单元格上时的虚线框
  47. //2,列头相关设置
  48. ui->userTreeView->header()->setHighlightSections(true); //列头点击时字体变粗,去掉该效果
  49. ui->userTreeView->header()->setDefaultAlignment(Qt::AlignLeft); //列头文字默认居中对齐
  50. //ui->userTreeView->header()->setDefaultSectionSize(200); //默认列宽100
  51. //ui->userTreeView->header()->setStretchLastSection(true); //最后一列自适应宽度
  52. //ui->userTreeView->header()->setSortIndicator(0, Qt::AscendingOrder); //按第1列升序排序
  53. ui->userTreeView->header()->setSectionResizeMode(QHeaderView::ResizeToContents); // # 设置表头的高度为固定大小
  54. ui->userTreeView->header()->setMinimumHeight(30);
  55. // 设置字体
  56. QFont font = ui->userTreeView->header()->font();
  57. //font.setBold(true);
  58. font.setPointSize(14);
  59. ui->userTreeView->header()->setFont(font);
  60. }
  61. void AccountMaintenanceWnd::AdditemsToTree(QList<UserAccounts> listStrName, bool bCreate)
  62. {
  63. if(bCreate)
  64. {
  65. SetTableHeaderStyle();
  66. QStringList headers;
  67. // 第一个只能手动对齐了.. 目前没啥好办法
  68. headers << tr("User Name ", "用户名称 ")
  69. << tr("Full Name ", "全名 ")
  70. << tr("Privilege", "特权");
  71. m_pModel = new QStandardItemModel(ui->userTreeView);
  72. m_pModel->setHorizontalHeaderLabels(headers);
  73. }
  74. else
  75. {
  76. for(auto& a : listStrName)
  77. {
  78. QList<QStandardItem*> liTtem;
  79. QStandardItem* pItemUser = new QStandardItem(a.UserName);
  80. pItemUser->setIcon(QIcon("://image/main/program.png"));
  81. QStandardItem* pItemFull = new QStandardItem(a.DisplayName);
  82. QString strPrivilegeName;
  83. if(a.Privilege == enPrivilegeLevel::Administrator)
  84. {
  85. strPrivilegeName = tr("Administrator","管理员");
  86. }
  87. else if(a.Privilege == enPrivilegeLevel::Engineer)
  88. {
  89. strPrivilegeName = tr("Engineer","工程师");
  90. }
  91. else if(a.Privilege == enPrivilegeLevel::Technician)
  92. {
  93. strPrivilegeName = tr("Technician","技术员");
  94. }
  95. else if(a.Privilege == enPrivilegeLevel::SeniorOperator)
  96. {
  97. strPrivilegeName = tr("Senior Operator","高级操作员");
  98. }
  99. else if(a.Privilege == enPrivilegeLevel::Operator)
  100. {
  101. strPrivilegeName = tr("Operator","操作员");
  102. }
  103. QStandardItem* pItemPrivilege = new QStandardItem(strPrivilegeName);
  104. liTtem << pItemUser << pItemFull << pItemPrivilege;
  105. m_pModel->appendRow(liTtem);
  106. }
  107. ui->userTreeView->setModel(m_pModel);
  108. }
  109. }
  110. void AccountMaintenanceWnd::on_addBut_clicked()
  111. {
  112. UpdateUserData({}, false);
  113. }
  114. void AccountMaintenanceWnd::on_modifyBut_clicked()
  115. {
  116. int nRow = ui->userTreeView->currentIndex().row();
  117. if(nRow > -1)
  118. {
  119. UpdateUserData(JUserAccountsData::GetInstance()->m_veUserAccounts[nRow], true);
  120. }
  121. InitUi();
  122. }
  123. void AccountMaintenanceWnd::on_delBut_clicked()
  124. {
  125. int nRow = ui->userTreeView->currentIndex().row();
  126. if(nRow > -1)
  127. {
  128. JUserAccountsData::GetInstance()->m_veUserAccounts.erase(
  129. JUserAccountsData::GetInstance()->m_veUserAccounts.begin() + nRow);
  130. }
  131. InitUi();
  132. }