一、借鉴文章一

https://blog.csdn.net/guorong520/article/details/89213769

1.LoginDialog.h

#ifndef LOGINDIALOG_H
#define LOGINDIALOG_H#include <QDialog>
#include <MoveDialog.h>

#include <QtSql>

#include <SqlOperate.h>

#include <classManage.h>

#include <ChangePassword.h>

#include <Regist.h>

#include <QApplication>

#include <QDir>

#include <QGraphicsDropShadowEffect>

#include "Login.h"

#include "SuperUser.h"

 

namespace Ui {

class LoginDialog;

}

 

class LoginDialog : public QDialog

{

Q_OBJECT

public:

explicit LoginDialog(QWidget *parent = 0);

~LoginDialog();

public slots:

void on_btnClose_clicked();

void on_btnZoom_clicked();

void on_btnSafeLogin_clicked();

void on_btnRegist_clicked();

void on_btnFindPassword_clicked();

private slots:

void on_btnRemember_stateChanged(int arg1);

private:

QString m_Username;

QString m_Password;

QString str_1;

QString str_2;

bool m_Remember;

private:

Ui::LoginDialog *ui;

};

#endif // LOGINDIALOG_H

2.LoginDialog.cpp

#include "LoginDialog.h"

#include "ui_LoginDialog.h"

#include <QLineEdit>

#include <QTimer>

#include <QPalette>

#include <QBrush>

#include <QPainter>

#include <QFont>

#include <QMessageBox>

#include <QShortcut>

#include <QKeyEvent>

#include <QMovie>

#include <QSettings>

#include<QDebug>

#pragma execution_character_set("utf-8")

LoginDialog::LoginDialog(QWidget *parent)

:ui(new Ui::LoginDialog)

{

ui->setupUi(this);

 

setAttribute(Qt::WA_TranslucentBackground);//背景透明

//设置无边框,点击图标栏可放大缩小

setWindowFlags(Qt::Window|Qt::FramelessWindowHint\

|Qt::WindowMinimizeButtonHint|Qt::WindowMaximizeButtonHint);

//设置背景提示

ui->editUsername->setPlaceholderText("请输入账号");

ui->editPassword->setPlaceholderText("请输入密码");

//密码显示黑圆圈

ui->editPassword->setEchoMode(QLineEdit::Password);

//label添加动态图片

QMovie *movie=new QMovie(":/qrc/pig.gif");

ui->labHead->setMovie(movie);

ui->labHead->setScaledContents(true);

movie->start();

//拿到控件的字体属性,设置字间距

QFont font = ui->btnSafeLogin->font();

font.setLetterSpacing(QFont::AbsoluteSpacing ,15);

ui->btnSafeLogin->setFont(font);

//鼠标停留显示提示

ui->btnClose->setToolTip("关闭");

ui->btnZoom->setToolTip("最小化");

//记住密码功能:读取配置文件

QSettings setting("userInfo/config.ini",QSettings::IniFormat);

m_Username = setting.value("Login/userName").toString();

ui->editUsername->setText(m_Username);

m_Password = setting.value("Login/passWord").toString();

ui->editPassword->setText(m_Password);

m_Remember = setting.value("Login/remeber").toBool();

//上次勾选,则初始化为已勾选,否则不设置

if(m_Remember)

{

ui->btnRemember->setChecked(true);

}

else

{

ui->editPassword->clear();

}

}

LoginDialog::~LoginDialog()

{

delete ui;

}

void LoginDialog::on_btnClose_clicked()

{

this->close();

}

//最小化

void LoginDialog::on_btnZoom_clicked()

{

  1.  
  2. this->setWindowState(Qt::WindowMinimized);

  3. }

  4.  
  5. void LoginDialog::on_btnSafeLogin_clicked()

  6. {

  7. //超级用户

  8. SuperUser *superUser = new SuperUser;

  9. //老师、学生

  10. //classManage *classmange = new classManage;

  11. str_1 = ui->editUsername->text();

  12. str_2 = ui->editPassword->text();

  13.  
  14. if(str_1 == Q_NULLPTR)

  15. {

  16. QMessageBox::information(this,"提示","请你输入账号后再登录");

  17. }

  18. else if(str_2 == Q_NULLPTR)

  19. {

  20. QMessageBox::information(this,"提示","请你输入密码后再登录");

  21. }

  22.  
  23. //人工设置此账号为超级用户

  24. if(str_1 == "daboluo" && str_2 == "520803")

  25. {

  26. //存储正确的用户名与密码,并在此写入

  27. m_Username = str_1;

  28. m_Password = str_2;

  29. on_btnRemember_stateChanged(1);

  30.  
  31. this->close();

  32. superUser->exec();

  33. }

  34.  
  35. }

  36.  
  37. void LoginDialog::on_btnRegist_clicked()

  38. {

  39.  
  40. }

  41.  
  42. void LoginDialog::on_btnFindPassword_clicked()

  43. {

  44.  
  45. }

  46.  
  47. //在登录框中检测是否点击记住密码

  48. void LoginDialog::on_btnRemember_stateChanged(int arg1)

  49. {

  50. QString binPath = QDir::currentPath();

  51. qDebug()<<"LoginDialog:147 "<<binPath;

  52.  
  53. //勾选进行存储

  54. if(arg1=ui->btnRemember->isChecked())

  55. {

  56. QSettings setting("userInfo/config.ini",QSettings::IniFormat);//读配置文件

  57. setting.beginGroup(tr("Login"));

  58. setting.setValue("userName",m_Username);//设置key和value,也就是参数和值

  59. setting.setValue("passWord",m_Password);

  60. setting.setValue("remeber",true);

  61. setting.endGroup();//节点结束

  62. qDebug()<<"记住密码";

  63. }

  64. //不勾选进行标记,下次打开后也不勾选

  65. else

  66. {

  67. QSettings setting("userInfo/config.ini",QSettings::IniFormat);//读配置文件

  68. setting.beginGroup(tr("Login"));

  69. setting.setValue("remeber",false);

  70. setting.endGroup();//节点结束

  71. qDebug()<<"不记住密码";

  72. }

  73. }

二、借鉴文章二

 

三、借鉴文章三:实现QQ登录界面

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐