QT编写登录界面,并记住多个用户名密码

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);
    }

}

 

 

  • 10
    点赞
  • 72
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
以下是使用Qt编写一个简单的登录界面的步骤: 1. 创建一个新的Qt项目,并添加一个新的窗口(例如MainWindow)。 2. 在MainWindow中添加一个QLabel和两个QLineEdit,分别用于输入用户名密码。 3. 添加一个QPushButton,用于登录。 4. 在按钮的clicked()信号中实现登录的功能。可以在这个函数中检查输入的用户名密码是否正确,如果正确则打开一个新的窗口或显示欢迎消息,否则提示用户登录失败。 5. 如果需要,可以添加其他的控件,比如复选框、下拉列表框等等,来实现更多的功能。 以下是一个简单的示例代码,实现了一个基本的登录界面: ```cpp #include "mainwindow.h" #include "ui_mainwindow.h" #include <QLabel> #include <QLineEdit> #include <QPushButton> #include <QMessageBox> MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent) , ui(new Ui::MainWindow) { ui->setupUi(this); QLabel *label1 = new QLabel("Username:", this); label1->setGeometry(50, 50, 100, 20); QLineEdit *lineEdit1 = new QLineEdit(this); lineEdit1->setGeometry(150, 50, 100, 20); QLabel *label2 = new QLabel("Password:", this); label2->setGeometry(50, 80, 100, 20); QLineEdit *lineEdit2 = new QLineEdit(this); lineEdit2->setGeometry(150, 80, 100, 20); lineEdit2->setEchoMode(QLineEdit::Password); QPushButton *button = new QPushButton("Login", this); button->setGeometry(50, 120, 200, 20); connect(button, &QPushButton::clicked, [=]() { QString username = lineEdit1->text(); QString password = lineEdit2->text(); if (username == "admin" && password == "admin") { QMessageBox::information(this, "Login", "Login successful!"); } else { QMessageBox::warning(this, "Login", "Invalid username or password!"); } }); } MainWindow::~MainWindow() { delete ui; } ``` 这个代码创建了一个带有两个文本框和一个按钮的窗口,当用户点击按钮时,它将检查输入的用户名密码是否正确,并在消息框中显示相应的消息。当然,这只是一个示例,你可以根据自己的需要对代码进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值