LoginWidget.cpp 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. #include "LoginWidget.h"
  2. #include "QFDConfig.h"
  3. #include <Widgets/LineEdit.h>
  4. #include <Widgets/CheckBox.h>
  5. #include <Widgets/Button.h>
  6. #include <QBoxLayout>
  7. #include <QLabel>
  8. LoginWidget::LoginWidget(QWidget *parent) : QWidget(parent)
  9. {
  10. initialize();
  11. initLayout();
  12. connectSignalsAndSlots();
  13. loadAccount();
  14. }
  15. void LoginWidget::setTitle(const QString title)
  16. {
  17. m_titleLabel->setText(title);
  18. }
  19. const QString LoginWidget::account() const
  20. {
  21. return m_accLineEdit->text();
  22. }
  23. const QString LoginWidget::password() const
  24. {
  25. return m_pwLineEdit->text();
  26. }
  27. bool LoginWidget::rememberPassword() const
  28. {
  29. return m_remCheckBox->isChecked();
  30. }
  31. void LoginWidget::saveAccountConfig() const
  32. {
  33. bool rem = m_remCheckBox->isChecked();
  34. QFDConfig::setRememberPassword(rem);
  35. if (rem) {
  36. QFDConfig::setUsername(m_accLineEdit->text());
  37. QFDConfig::setPassword(m_pwLineEdit->text());
  38. }
  39. }
  40. void LoginWidget::initialize()
  41. {
  42. m_vBoxLayout = new QVBoxLayout(this);
  43. m_titleLabel = new QLabel(this);
  44. m_titleLabel->setStyleSheet("color:#ffffff;");
  45. QFont ft;
  46. ft.setPointSize(15);
  47. ft.setBold(true);
  48. m_titleLabel->setFont(ft);
  49. m_accLineEdit = new LineEdit(this);
  50. m_accLineEdit->setIsClearButtonEnabled(true);
  51. m_accLineEdit->setPlaceholderText("请输入账号");
  52. m_accLineEdit->setFixedWidth(250);
  53. m_pwLineEdit = new PasswordLineEdit(this);
  54. m_pwLineEdit->setPlaceholderText("请输入密码");
  55. m_pwLineEdit->setFixedWidth(250);
  56. m_remLayout = new QHBoxLayout();
  57. m_remCheckBox = new CheckBox("记住密码", this);
  58. const QString &s = m_remCheckBox->styleSheet() + "CheckBox {color:white}";
  59. m_remCheckBox->setStyleSheet(s);
  60. m_buttonLayout = new QHBoxLayout();
  61. m_loginButton = new PushButton("登录", this);
  62. m_cancelButton = new PushButton("取消", this);
  63. }
  64. void LoginWidget::initLayout()
  65. {
  66. setLayout(m_vBoxLayout);
  67. m_vBoxLayout->setAlignment(Qt::AlignCenter);
  68. m_vBoxLayout->addWidget(m_titleLabel);
  69. m_vBoxLayout->addSpacing(20);
  70. m_vBoxLayout->addWidget(m_accLineEdit);
  71. m_vBoxLayout->addSpacing(20);
  72. m_vBoxLayout->addWidget(m_pwLineEdit);
  73. m_vBoxLayout->addSpacing(20);
  74. m_vBoxLayout->addLayout(m_remLayout);
  75. m_remLayout->addWidget(m_remCheckBox);
  76. m_remLayout->addSpacing(30);
  77. m_vBoxLayout->addSpacing(40);
  78. m_vBoxLayout->addLayout(m_buttonLayout);
  79. m_buttonLayout->addWidget(m_loginButton);
  80. m_buttonLayout->addSpacing(20);
  81. m_buttonLayout->addWidget(m_cancelButton);
  82. }
  83. void LoginWidget::connectSignalsAndSlots()
  84. {
  85. connect(m_loginButton, &PushButton::clicked, this, &LoginWidget::signalLogin);
  86. connect(m_cancelButton, &PushButton::clicked, this, &LoginWidget::signalCancel);
  87. }
  88. void LoginWidget::loadAccount()
  89. {
  90. bool rem = QFDConfig::rememberPassword();
  91. m_remCheckBox->setChecked(rem);
  92. if (rem) {
  93. m_accLineEdit->setText(QFDConfig::username());
  94. m_pwLineEdit->setText(QFDConfig::password());
  95. }
  96. }