一、记录我自己做的登录框
包含功能:设置无边框、背景图片、动态图片、登录验证、程序图标、记住密码等功能。
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()
{
this->setWindowState(Qt::WindowMinimized);
}
void LoginDialog::on_btnSafeLogin_clicked()
{
//超级用户
SuperUser *superUser = new SuperUser;
//老师、学生
//classManage *classmange = new classManage;
str_1 = ui->editUsername->text();
str_2 = ui->editPassword->text();
if(str_1 == Q_NULLPTR)
{
QMessageBox::information(this,"提示","请你输入账号后再登录");
}
else if(str_2 == Q_NULLPTR)
{
QMessageBox::information(this,"提示","请你输入密码后再登录");
}
//人工设置此账号为超级用户
if(str_1 == "daboluo" && str_2 == "520803")
{
//存储正确的用户名与密码,并在此写入
m_Username = str_1;
m_Password = str_2;
on_btnRemember_stateChanged(1);
this->close();
superUser->exec();
}
}
void LoginDialog::on_btnRegist_clicked()
{
}
void LoginDialog::on_btnFindPassword_clicked()
{
}
//在登录框中检测是否点击记住密码
void LoginDialog::on_btnRemember_stateChanged(int arg1)
{
QString binPath = QDir::currentPath();
qDebug()<<"LoginDialog:147 "<<binPath;
//勾选进行存储
if(arg1=ui->btnRemember->isChecked())
{
QSettings setting("userInfo/config.ini",QSettings::IniFormat);//读配置文件
setting.beginGroup(tr("Login"));
setting.setValue("userName",m_Username);//设置key和value,也就是参数和值
setting.setValue("passWord",m_Password);
setting.setValue("remeber",true);
setting.endGroup();//节点结束
qDebug()<<"记住密码";
}
//不勾选进行标记,下次打开后也不勾选
else
{
QSettings setting("userInfo/config.ini",QSettings::IniFormat);//读配置文件
setting.beginGroup(tr("Login"));
setting.setValue("remeber",false);
setting.endGroup();//节点结束
qDebug()<<"不记住密码";
}
}