首頁 > 軟體

QT實現使用者登入註冊

2022-06-14 18:01:42

本文範例為大家分享了QT實現使用者登入註冊的具體程式碼,供大家參考,具體內容如下

#include "widget.h"
#include "ui_widget.h"

//視窗設定
#include <QStyle>

//資料庫連線
#include <QtSql/QSqlQuery>//資料庫操作函數
#include <QtSql/QSqlError>//輸出錯誤資訊

#include <QMessageBox>//
#include <QSettings>//讀寫組態檔
#include <QtDebug>

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

//視窗設定
    //設定視窗不顯示標題,無邊框
     setWindowFlags(Qt::Window|Qt::FramelessWindowHint);

//設定最小化、關閉按鈕

     //獲取最小化、關閉按鈕圖示

      QPixmap minPix = style()->standardPixmap(QStyle::SP_TitleBarMinButton);
      QPixmap closePix = style()->standardPixmap(QStyle::SP_TitleBarCloseButton);

      ui->mintoolButton->setIcon(minPix);
      ui->closetoolButton->setIcon(closePix);
      ui->mintoolButton->setStyleSheet("bakground-color:tranparent:");
      ui->closetoolButton->setStyleSheet("bakground-color:tranparent:");

      connect(ui->mintoolButton,&QPushButton::clicked,this,&Widget::showMinimized);
      connect(ui->closetoolButton,&QPushButton::clicked,this,&Widget::close);

//資料庫連線
      //連線資料庫
         //檢視當前支援的資料庫的驅動
          qDebug()<<QSqlDatabase::drivers();

          QSqlDatabase DB;//建立一個資料庫的檔案
         //載入資料庫的檔案
          QString aFile="./dataBase.db";
          if(aFile.isEmpty())
          {
              qDebug()<<" 資料庫檔案載入失敗 " ;
              return ;
          }
          //開啟資料庫
          DB=QSqlDatabase::addDatabase("QSQLITE");//建立QSQLITE資料庫連線
          DB.setDatabaseName(aFile); //資料庫名
          if(!DB.open())
          {
              //沒有資料庫檔案則建立檔案
              qDebug()<<"資料庫檔案開啟失敗";
              qDebug()<<DB.lastError().text();//輸出錯誤資訊
           }
          qDebug()<< " 開啟資料庫檔案成功 " ;

      //從組態檔中讀取使用者名稱和密碼:
          QSettings setting("config.ini",QSettings::IniFormat);
          QString account = setting.value("section/account").toString();
          QString password = setting.value("section/password").toString();
          ui->accountEdit->setText(account);
          ui->passwordEdit->setText(password);

         //使用者註冊,向資料庫插入資料
          connect(ui->registerButton,&QPushButton::clicked,this,[=](){

          //接受使用者輸入:
              QString account = ui->accountEdit->text();//使用者賬號
              QString password = ui->passwordEdit->text();//密碼

          //建立自己需要使用的表格
              QSqlQuery query(DB);
              if(!query.exec("create table user(account varchar(255) primary key, password varchar(255))"))
              {
                  qDebug() << "Error: Fail to create table."<< query.lastError();
              }
              else
              {
                  qDebug() << "Table created!";
              }


          //插入資料
              QString qs = QString("insert into user(account,password) values('%1','%2')")
                      .arg(account).arg(password);

              if(query.exec(qs)) //如果插入成功
              {
                  QMessageBox::information(this,"註冊","註冊成功");
              }
              else
              {
                  QMessageBox::information(this,"註冊","註冊失敗");
                  qDebug()<<query.lastError().text();//輸出錯誤資訊
                  //return;
              }

          //檢視資料
              //檢視資料庫中有的表格的名字
              qDebug()<<"檢視資料庫中所有的表:";
              QStringList str_table=DB.tables();
              qDebug()<<str_table;
              //查詢資料庫中的資料
              qDebug()<<"檢視資料庫中資料";
              query.prepare ("SELECT * FROM user");
              query.exec();
              while(query.next())
              {
                  qDebug()<<QString("account:%1,password:%2").
                            arg(query.value("account").toString()).arg(query.value("password").toString());
              }

          });

      //使用者登入:查詢資料

          connect(ui->loginButton,&QPushButton::clicked,this,[=](){

              //接受使用者輸入:
               QString account = ui->accountEdit->text();//使用者賬號
               QString password = ui->passwordEdit->text();//密碼

              //查詢資料
               QSqlQuery query;//運算元據庫
               QString qs = QString("select * from user where account ='%1' and password='%2'").
                       arg(account).arg(password);

               if(!query.exec(qs))//如果沒有查到記錄
               {
                   qDebug() << query.lastError().text();//輸出錯誤資訊
                   return;
               }

               //獲取查詢的資料
               if(query.next())//獲取到資料
               {
                   QMessageBox::information(this,"登入","登入成功");

                   connect(tw,&TestWidget::testSigna,this,&Widget::show);//顯示主視窗

                   //在組態檔中記錄使用者賬號密碼
                   if(ui->checkBox->isChecked())//選中,也就是使用者已經登入
                   {
                       //建立組態檔
                       QSettings setting("config.ini",QSettings::IniFormat);//組態檔在工程目錄下
                       //把使用者賬號密碼寫到組態檔中
                       setting.beginGroup("section");//節開始
                       setting.setValue("account",account);
                       setting.setValue("password",password);
                       setting.endGroup();//結束
                   }
               }
               else
               {
                   QMessageBox::information(this,"登入","登入失敗");
               }
          });

}

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

#按鈕的ui實現

結果

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com