首页 > 代码库 > qt学习 (五) 登陆界面之连接按钮

qt学习 (五) 登陆界面之连接按钮

登陆步骤是比对输入的账号密码与数据库中的表项目是否一致

一样,  跳出mainwidget对话框

不一样,跳出消息错误框

 

  今天就是要进去,

因为进去以后是widget的窗口,所以把用来核对消息的数据库放在MAINwidget。cpp中,

再拿一个用户点击连接的子类 login.cpp, 就在这里面画用户登录账号密码textEdit

 

1 除了textEdit 基本都是button 慢慢加。 登录界面可以学的东西很多。

image

2 在widget。h文件中加入数据库所需要的头文件,

#include <QtSql/QSqlDatabase>

#include <QtSql/QSqlQuery>
#include <QtSql/QSqlError>
数据库有基本的驱动Qsqlite
  有比较好的使用数据库的模式, 就是把数据库基本创建放在一个文件中, 查改增删都去调用这个就行了。
 
使用数据库的基本命令

QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");//建数据库

db.setDatabaseName("mayplestory.db"); //命名数据库为may..
数据库初始化:

query.exec(QObject::tr("create table mayplestory(id int primary key, name varchar(20), password varchar(20));"));

插入数据: 
   query.exec(QObject::tr("insert into mayplestory values(0,‘yuyuyu‘,‘123456‘);"));
 
查询数据的方法:
query.exec(QObject::tr("select * from mayplestory;"));
  以上“”中的 是真正平时数据库的命令,着这里用tr表示输入。

3 数据库我们建立好了,那就读取ui上输入的数据来判断,和qt学习4里面的思路是一样的 ,

当判断成功,就放回accept信号到main()中。

       现在怎么判断呢, 不在是

if(my1.exec() == QDialog::Accepted)

{

w.show();

}

而是用if(账号 == 数据库value(1)&& 密码 == 数据库value(2))

{

accept(); 发出accept信号表示成功

break; 把accept信号回送到main中。

}

 

最后在main函数中使用if判断是否成功,

if(login.exec() == QDialog::Accepted)

        {
            w.show();
            return a.exec();
        }
 

4 代码如下:

logindlg.h

 

#ifndef CONNECTION_H#define CONNECTION_H#include <QDialog>namespace Ui {    class loginDlg;}class loginDlg : public QDialog{    Q_OBJECTpublic:    explicit loginDlg(QWidget *parent = 0);    ~loginDlg();private slots:    void on_loginBtn_clicked();private:    Ui::loginDlg *ui;};#endif // LOGINDLG_H

 

 

widget.h

#ifndef WIDGET_H#define WIDGET_H#include <QWidget>#include <QtSql/QSqlDatabase>#include <QtSql/QSqlQuery>#include <QtSql/QSqlError>#include <QDebug>#include <QMessageBox>#include <QCoreApplication>static bool createConnection(){    QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");    db.setDatabaseName("mayplestory.db");    if(!db.open())    {        QMessageBox::critical(0,qApp->tr("Cannot open database"),qApp->tr("unable to estabilished a database connection"),QMessageBox::Cancel);        return false;    }    qDebug() << "created begin";    QSqlQuery query;    query.exec(QObject::tr("create table mayplestory(id int primary key, name varchar(20), password varchar(20));"));    query.exec(QObject::tr("insert into mayplestory values(0,‘yuyuyu‘,‘123456‘);"));    //  query.exec("select *from information");    qDebug() << "created end" ;    return true;}namespace Ui {    class Widget;}class Widget : public QWidget{    Q_OBJECTpublic:    explicit Widget(QWidget *parent = 0);    ~Widget();private:    Ui::Widget *ui;     QSqlDatabase db;};#endif // WIDGET_H

 

logindlg.cpp

#include "logindlg.h"#include "ui_logindlg.h"#include <QtGui>#include "widget.h"loginDlg::loginDlg(QWidget *parent) :    QDialog(parent),    ui(new Ui::loginDlg){    ui->setupUi(this);    ui->pwdLineEdit->setEchoMode(QLineEdit::Password);    //ui->pushButton->setFlat(true);}loginDlg::~loginDlg(){    delete ui;}void loginDlg::on_loginBtn_clicked(){    QSqlQuery query;    query.exec(QObject::tr("select * from mayplestory;"));    while(query.next())    {        if(ui-> usrLineEdit->text().trimmed() ==  query.value(1)&& ui-> pwdLineEdit->text() == query.value(2)  )         {            accept();            break;         }            if (query.next() == NULL)            {                QMessageBox::warning(this,tr("Warning"),tr("user name or password error !!!"),QMessageBox::Yes);                ui->usrLineEdit->clear();                ui->pwdLineEdit->clear();                ui->usrLineEdit->setFocus();            }    }}

 

 

 main.cpp
#include <QtGui/QApplication>#include "widget.h"#include "logindlg.h"int main(int argc, char *argv[]){        QApplication a(argc, argv);        Widget w;        loginDlg login;        if(!createConnection())            qDebug()<<"unconnect";        else              qDebug()<<"connect";        login.show();        if(login.exec() == QDialog::Accepted)        {            w.show();            return a.exec();        }        else return 0;}

 

 widget.cpp
#include "widget.h"#include "ui_widget.h"Widget::Widget(QWidget *parent) :    QWidget(parent),    ui(new Ui::Widget){    ui->setupUi(this);}Widget::~Widget(){    delete ui;}

 

 
 
 
 
 
5.结果显示,  输入账号yuyuyu   和   密码 :
image
 
失败了:
image
 
成功:
image