EXLoginWidget.cpp 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  1. #include "EXLoginWidget.h"
  2. #include "EXConfig.h"
  3. #include <dbService/ClassSet.h>
  4. #include <Widgets/LineEdit.h>
  5. #include <Widgets/CheckBox.h>
  6. #include <Widgets/Button.h>
  7. #include <QBoxLayout>
  8. #include <QLabel>
  9. #include <QPainter>
  10. EXLoginWidget::EXLoginWidget(QWidget *parent) : QWidget(parent)
  11. {
  12. initialize();
  13. initLayout();
  14. connectSignalsAndSlots();
  15. loadAccount();
  16. resize(500, 500);
  17. }
  18. void EXLoginWidget::paintEvent(QPaintEvent *event)
  19. {
  20. QWidget::paintEvent(event);
  21. QPainter painter(this);
  22. QPixmap pixmap(":/resource/background/8.jpg");
  23. painter.drawPixmap(0, 0,
  24. pixmap.scaled(width(), height(), Qt::KeepAspectRatioByExpanding, Qt::SmoothTransformation));
  25. }
  26. void EXLoginWidget::setTitle(const QString title)
  27. {
  28. m_titleLabel->setText(title);
  29. }
  30. const QString EXLoginWidget::account() const
  31. {
  32. return m_accLineEdit->text();
  33. }
  34. const QString EXLoginWidget::password() const
  35. {
  36. return m_pwLineEdit->text();
  37. }
  38. bool EXLoginWidget::rememberPassword() const
  39. {
  40. return m_remCheckBox->isChecked();
  41. }
  42. void EXLoginWidget::saveAccountConfig() const
  43. {
  44. bool rem = m_remCheckBox->isChecked();
  45. EXConfig::setRememberPassword(rem);
  46. if (rem) {
  47. EXConfig::setUsername(m_accLineEdit->text());
  48. EXConfig::setPassword(m_pwLineEdit->text());
  49. }
  50. }
  51. void EXLoginWidget::initialize()
  52. {
  53. m_vBoxLayout = new QVBoxLayout(this);
  54. m_titleLabel = new QLabel(this);
  55. m_titleLabel->setStyleSheet("color:#ffffff;");
  56. QFont ft;
  57. ft.setPointSize(15);
  58. ft.setBold(true);
  59. m_titleLabel->setFont(ft);
  60. m_accLineEdit = new LineEdit(this);
  61. m_accLineEdit->setIsClearButtonEnabled(true);
  62. m_accLineEdit->setPlaceholderText("请输入账号");
  63. m_accLineEdit->setFixedWidth(250);
  64. m_pwLineEdit = new PasswordLineEdit(this);
  65. m_pwLineEdit->setPlaceholderText("请输入密码");
  66. m_pwLineEdit->setFixedWidth(250);
  67. m_remLayout = new QHBoxLayout();
  68. m_remCheckBox = new CheckBox("记住密码", this);
  69. m_remCheckBox->setHidden(true);
  70. const QString &s = m_remCheckBox->styleSheet() + "CheckBox {color:white}";
  71. m_remCheckBox->setStyleSheet(s);
  72. m_buttonLayout = new QHBoxLayout();
  73. m_loginButton = new PushButton("登录", this);
  74. m_cancelButton = new PushButton("取消", this);
  75. m_adminTips = new QLabel(this);
  76. m_adminTips->setText("默认管理员账号密码是admin/admin");
  77. m_adminTips->setStyleSheet("color:#dddddd");
  78. }
  79. void EXLoginWidget::initLayout()
  80. {
  81. setLayout(m_vBoxLayout);
  82. m_vBoxLayout->setAlignment(Qt::AlignCenter);
  83. m_vBoxLayout->addWidget(m_titleLabel);
  84. m_vBoxLayout->addSpacing(20);
  85. m_vBoxLayout->addWidget(m_accLineEdit);
  86. m_vBoxLayout->addSpacing(20);
  87. m_vBoxLayout->addWidget(m_pwLineEdit);
  88. m_vBoxLayout->addSpacing(20);
  89. m_vBoxLayout->addLayout(m_remLayout);
  90. m_remLayout->addWidget(m_remCheckBox);
  91. m_remLayout->addSpacing(30);
  92. m_vBoxLayout->addSpacing(40);
  93. m_vBoxLayout->addLayout(m_buttonLayout);
  94. m_buttonLayout->addWidget(m_loginButton);
  95. m_buttonLayout->addSpacing(20);
  96. m_buttonLayout->addWidget(m_cancelButton);
  97. m_vBoxLayout->addSpacing(10);
  98. m_vBoxLayout->addWidget(m_adminTips);
  99. }
  100. void EXLoginWidget::connectSignalsAndSlots()
  101. {
  102. connect(m_loginButton, &PushButton::clicked, this, &EXLoginWidget::signalLogin);
  103. connect(m_cancelButton, &PushButton::clicked, this, &EXLoginWidget::signalCancel);
  104. }
  105. void EXLoginWidget::loadAccount()
  106. {
  107. int roleType = EXConfig::roleType();
  108. if (roleType == QFUser::SuperAdmin) {
  109. setTitle("管理员登录");
  110. } else {
  111. setTitle("专家登录");
  112. }
  113. bool rem = EXConfig::rememberPassword();
  114. m_remCheckBox->setChecked(rem);
  115. if (rem) {
  116. m_accLineEdit->setText(EXConfig::username());
  117. m_pwLineEdit->setText(EXConfig::password());
  118. }
  119. m_adminTips->setHidden(EXConfig::passwordModified());
  120. }