LoginWidget.h
#ifndef LOGINWIDGET_H
#define LOGINWIDGET_H
#include <QWidget>
#include <QSettings>
#include "ui_loginwidget.h"//UI界面
class LoginWidget : public QWidget
{
Q_OBJECT
public:
explicit LoginWidget(QWidget *parent = 0);
~LoginWidget();
private :
void loginData();
void LoginInit();
void loadcfg();
void ReadInit(QString, QStringList&);
void WriteInit(QString, QStringList);
private slots:
void setlogint(int);
void timeOut();
void on_LoginButton_clicked();
void on_checkBox_clicked();
private:
Ui::Form *ui;
QStringList m_passwdList;//保存密码
QStringList m_IPList;//保存IP
QStringList m_isremberList;
QStringList m_userNameList;
QString isrembered;//是否记住密码
QString username;
QString password;
};
#endif // LOGINWIDGET_H
LoginWidget.cpp
#include "LoginWidget.h"
LoginWidget::LoginWidget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Form)
{
ui->setupUi(this);
LoginInit();
loadcfg();
//ui->userComboBox 用户名输入框QComboBox ui->passwordEdit 密码输入框 QLineEdit
connect(ui->userComboBox,SIGNAL(currentTextChanged(QString)),
ui->passwordEdit,SLOT(clear()));
connect(ui->userComboBox,SIGNAL(currentIndexChanged(int)),
this,SLOT(setlogint(int)));
}
void LoginWidget::LoginInit()
{
//暗注释
ui->userComboBox->lineEdit()->setPlaceholderText(QStringLiteral("请输入用户名"));
ui->userComboBox->lineEdit()->setMaxLength(8);
ui->passwordEdit->setPlaceholderText(QStringLiteral("请输入密码"));
ui->passwordEdit->setMaxLength(8);
ui->passwordEdit_2->setPlaceholderText(QStringLiteral("请输入IP"));
m_userNameList.clear();
m_passwdList.clear();
m_isremberList.clear();
m_IPList.clear();
}
LoginWidget::~LoginWidget()
{
delete ui;
}
void LoginWidget::setlogint(int index)
{
if(m_passwdList.size()>index){
password = m_passwdList.at(index);
isrembered = m_isremberList.at(index);
if(isrembered== "true")
{
ui->checkBox->setChecked(true);//勾选记住用户名密码
ui->passwordEdit->setText(password);
}else{
ui->checkBox->setChecked(false);
ui->passwordEdit->setText("");
}
}
}
void LoginWidget::on_LoginButton_clicked()
{
username = ui->userComboBox->currentText() ;
password = ui->passwordEdit->text();
QString ip = ui->IPEdit->text();
if(m_userNameList.contains(username)){
for(int i=0;i<m_userNameList.size();i++){
QString user = m_userNameList.at(i);
if(user == username){
m_userNameList.removeAt(i);
m_passwdList.removeAt(i);
m_isremberList.removeAt(i);
m_userNameList.push_front(username);
m_passwdList.push_front(password);
m_isremberList.push_front(isrembered);
}
}
}else{
if(username != ""){
m_userNameList.push_front(username);
if(m_userNameList.size()>5)
m_userNameList.pop_back();
m_passwdList.push_front(password);
if(m_passwdList.size()>5)
m_passwdList.pop_back();
if(m_IPList.size()>0){
m_IPList.replace(0,ip);
}else{
m_IPList.append(ip);
}
m_isremberList.push_front(isrembered);
if(m_isremberList.size()>5)
m_isremberList.pop_back();
}
}
WriteInit("username",m_userNameList);
WriteInit("password",m_passwdList);
WriteInit("ip",m_IPList);
WriteInit("isrembered",m_isremberList);//可以在登录成功返回的地方记录
}
void LoginWidget::ReadInit(QString key, QStringList&value)
{
value.clear();
QString path = "login.ini";
//创建配置文件操作对象
QSettings *config = new QSettings(path, QSettings::IniFormat);
//读取配置信息
QVariant variant = config->value(QString("config/") + key);
value = variant.value<QStringList>();
delete config;
}
void LoginWidget::WriteInit(QString key, QStringList value)
{
QString path = "login.ini";
//创建配置文件操作对象
QSettings *config = new QSettings(path, QSettings::IniFormat);
QVariant variant;
variant.setValue(value);
//将信息写入配置文件
config->beginGroup("config");
config->setValue(key, variant);
config->endGroup();
delete config;
}
void LoginWidget::on_checkBox_clicked()
{
if(ui->checkBox->isChecked()){
isrembered = "true";
}else{
isrembered = "false";
}
}
void LoginWidget::loadcfg()//载入用户名和密码
{
QString ip;
ReadInit("username",m_userNameList);
ReadInit("password",m_passwdList);
ReadInit("isrembered",m_isremberList);
ReadInit("ip",m_IPList);
if(m_IPList.size()>0)
ip = m_IPList.at(0);
ui->IPEdit->setText(ip);
ui->userComboBox->addItems(m_userNameList);
if(m_userNameList.size()>0)
username = m_userNameList.at(0);
if(m_passwdList.size()>0)
password = m_passwdList.at(0);
if(m_isremberList.size()>0)
isrembered = m_isremberList.at(0);
if(isrembered == "true")
{
ui->checkBox->setChecked(true);
ui->userComboBox->setCurrentText(username);
ui->passwordEdit->setText(password);
}
}