Qt登陆页面的写法

本文介绍了一个使用QtCreator和SQLite数据库实现的简单登录注册系统。该系统包括主窗口、注册窗口等组件,通过C++代码实现了用户信息的读取、验证及注册功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  登陆页面即读取数据库的用户名和密码信息,进行匹配正确后方可下一步操作。本例IDE采用Qt creator,数据库SQLite。

建立数据库、creator工程:

主页面、注册页面及其控件变量名:

 

main.cpp

#include <QtGui/QApplication>
#include "mainwindow.h"
// #include "enroll.h"
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    w.show();
    return a.exec();
}

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QSqlDatabase>
#include <QSqlQuery>
#include <string>
#include "enrollwindow.h"
using namespace std;

typedef struct{
    string UsrName;
    string Password;
}UsrInfo;

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow {
    Q_OBJECT
public:
    MainWindow(QWidget *parent = 0);
    ~MainWindow();

protected:
    void changeEvent(QEvent *e);
    void getUsrList();
    void showUsrList();
private:
    Ui::MainWindow *ui;
    EnrollWindow m_penroll;
    QSqlDatabase m_database;
    bool m_bOpen;
    vector<UsrInfo>m_usrList;
private slots:
    void on_pushButton_Enroll_clicked();
    void on_pushButton_Cel_clicked();
    void on_pushButton_Login_clicked();
};

#endif // MAINWINDOW_H

enrollwindow.h

#ifndef ENROLLWINDOW_H
#define ENROLLWINDOW_H

#include <QMainWindow>
#include <QSqlDatabase>
#include <QSqlQuery>

namespace Ui {
    class EnrollWindow;
}

class EnrollWindow : public QMainWindow {
    Q_OBJECT
public:
    EnrollWindow(QWidget *parent = 0);
    ~EnrollWindow();

protected:
    void changeEvent(QEvent *e);

private:
    Ui::EnrollWindow *ui;

private slots:
    void on_pushButton_cel_clicked();
    void on_pushButton_enroll_clicked();
};

#endif // ENROLLWINDOW_H

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QMessageBox>
#include <QDebug>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);
  //  m_penroll = parent;

    m_database = QSqlDatabase::addDatabase("QSQLITE");
    m_database.setDatabaseName("login.db");
    if(m_database.open())
    {
        m_bOpen = true;

    }
    m_bOpen = false;

    showUsrList();
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::changeEvent(QEvent *e)
{
    QMainWindow::changeEvent(e);
    switch (e->type()) {
    case QEvent::LanguageChange:
        ui->retranslateUi(this);
        break;
    default:
        break;
    }
}

void MainWindow::showUsrList()
{
    getUsrList();
    int nCount=m_usrList.size();
    for(int i=0;i<nCount;i++)
    {
        UsrInfo usr = m_usrList.at(i);
        ui->comboBox->addItem(usr.UsrName.c_str(),i);
    }
    if (nCount > 0)
    {
        ui->comboBox->setCurrentIndex(0);
    }

}

void MainWindow::getUsrList()
{
    QSqlQuery sql_query;
    QString select_all_sql = "select * from main";
    sql_query.prepare(select_all_sql);
    if(!sql_query.exec())
    {
        return;
    }
    else
    {
        while(sql_query.next())
        {
            UsrInfo usr;
            QString name = sql_query.value(0).toString();
            usr.UsrName=name.toStdString();
            QString password = sql_query.value(1).toString();
            usr.Password=password.toStdString();
            m_usrList.push_back(usr);
        }
    }

}

void MainWindow::on_pushButton_Login_clicked()
{
    QString name=ui->comboBox->currentText();
    QString password=ui->lineEdit->text();
    QString sqlPassword;
        QSqlQuery sql_query;
        QString select_all_sql = "select * from main where usr='";
        select_all_sql+=name;
        select_all_sql+="'";
        sql_query.prepare(select_all_sql);
        if(!sql_query.exec())
        {
            return;
        }
        else
        {
            if(!sql_query.next())
            {
                return;
            }
            else
            {
                 sqlPassword = sql_query.value(1).toString();
            }
        }
        if(sqlPassword==password)
        {
            QMessageBox::information(this,QString::fromUtf8("提示"),QString::fromUtf8("登陆成功!"));
        }
        else
        {
            QMessageBox::warning(this,QString::fromUtf8("提示"),QString::fromUtf8("密码错误!"));
        }
}

void MainWindow::on_pushButton_Cel_clicked()
{
    this->close();
}

void MainWindow::on_pushButton_Enroll_clicked()

enrollwindow.cpp

#include "enrollwindow.h"
#include "ui_enrollwindow.h"
#include <QMessageBox>
EnrollWindow::EnrollWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::EnrollWindow)
{
    ui->setupUi(this);
}

EnrollWindow::~EnrollWindow()
{
    delete ui;
}

void EnrollWindow::changeEvent(QEvent *e)
{
    QMainWindow::changeEvent(e);
    switch (e->type()) {
    case QEvent::LanguageChange:
        ui->retranslateUi(this);
        break;
    default:
        break;
    }
}

void EnrollWindow::on_pushButton_enroll_clicked()
{
    QString name = ui->lineEdit_name->text();
    QString password = ui->lineEdit_password->text();
     QString strSql;
     QSqlQuery sql_query;
     strSql = QString("insert into main(usr, password) values ( '%1', '%2');").arg(QString(name)).arg(QString(password));
     sql_query.prepare(strSql);
     if(!sql_query.exec())
     {
         //qDebug()<<sql.lastError();
         return ;
     }
     else
     {
         QMessageBox::information(this,QString::fromUtf8("提示"),QString::fromUtf8("注册成功!"));
     }

}

void EnrollWindow::on_pushButton_cel_clicked()
{
    this

登陆成功:

密码错误:

注册成功及其对应SQLite数据库:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值