Qt 实现登录功能

Qt项目实现登录功能:
思想:
根据登录页面的用户名和密码,去 数据库的用户表中查询是否有这个而用户,如果有就登录没有就提示错误!

数据库。
在数据库建立相应的表格。如下图mysql数据表格。
在这里插入图片描述
Qt :
首先创建相应的登录页面。如下图
在这里插入图片描述
程序
.pro 文件:
添加 :

QT       += sql

.h 文件

#include <QWidget>
#include <QSqlDatabase>
#include <QSqlQuery>

namespace Ui {
class LoginPage;
}
class LoginPage : public QWidget
{
    Q_OBJECT

public:
    explicit LoginPage(QWidget *parent = 0);
    ~LoginPage();

    void initsql();   //初始化数据库
private slots:
    void on_pushButton_clicked();
private:
    Ui::LoginPage *ui;
    QSqlDatabase db;
    QSqlQuery *query;
};

.cpp 文件

#include "loginpage.h"
#include "ui_loginpage.h"

#include <QStackedWidget>
#include <QMessageBox>
#include <QDebug>
#include <QWidget>

LoginPage::LoginPage(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::LoginPage)
{
    ui->setupUi(this);
    initsql();
    ui->lineEdit_2->setEchoMode(QLineEdit::Password);  //隐藏
}

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

void LoginPage::initsql()
{
    //数据库连接
    db = QSqlDatabase::addDatabase("QMYSQL");   //那种类型的数据库
    db.setHostName("127.0.0.1");    //本机地址
    db.setPort(3306);      //端口号
    db.setDatabaseName("fsjc");    //那个数据库
    db.setUserName("root");      //用户名
    db.setPassword("123456");    //密码
    db.open();
    if(!db.open()) //如果数据库打开失败,会弹出一个警告窗口
    {
        QMessageBox::warning(this, "警告", "数据库打开失败!!");
    }
    else
    {
    	return;
         //QMessageBox::warning(this, "警告", "数据库开启成功!!");
    }
}

//跳转到主页面
void LoginPage::on_pushButton_clicked()
{
    //获得用户和密码
    QString name=ui->lineEdit->text();
    QString password=ui->lineEdit_2->text();

    QString str=QString("select * from User where Name='%1' and Password='%2'").arg(name).arg(password);
    query=new QSqlQuery;
    query->exec(str);
    query->last();
    int record=query->at()+1;
    if(record==0){
        QMessageBox::information(this,"提示","用户或密码不对",QMessageBox::Ok);
    }
    else{
        QStackedWidget *stackWidget;
        QWidget *widget=this->parentWidget()->parentWidget();
        qDebug()<<widget;
        if(!widget->inherits("QStackedWidget")){
            return;
        }
        if(widget){
            stackWidget=(QStackedWidget *)widget;
            stackWidget->setCurrentIndex(2);
        }
        // emit signalsdataPage();
    }
}

版权声明:本文为weixin_42692504原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。