溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

QT如何實(shí)現(xiàn)用戶登錄注冊

發(fā)布時間:2022-06-14 16:55:20 來源:億速云 閱讀:1534 作者:iii 欄目:開發(fā)技術(shù)

本篇內(nèi)容主要講解“QT如何實(shí)現(xiàn)用戶登錄注冊”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“QT如何實(shí)現(xiàn)用戶登錄注冊”吧!

具體代碼如下

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

//窗口設(shè)置
#include <QStyle>

//數(shù)據(jù)庫連接
#include <QtSql/QSqlQuery>//數(shù)據(jù)庫操作函數(shù)
#include <QtSql/QSqlError>//輸出錯誤信息

#include <QMessageBox>//
#include <QSettings>//讀寫配置文件
#include <QtDebug>

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

//窗口設(shè)置
    //設(shè)置窗口不顯示標(biāo)題,無邊框
     setWindowFlags(Qt::Window|Qt::FramelessWindowHint);

//設(shè)置最小化、關(guān)閉按鈕

     //獲取最小化、關(guān)閉按鈕圖標(biāo)

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

//數(shù)據(jù)庫連接
      //連接數(shù)據(jù)庫
         //查看當(dāng)前支持的數(shù)據(jù)庫的驅(qū)動
          qDebug()<<QSqlDatabase::drivers();

          QSqlDatabase DB;//創(chuàng)建一個數(shù)據(jù)庫的文件
         //加載數(shù)據(jù)庫的文件
          QString aFile="./dataBase.db";
          if(aFile.isEmpty())
          {
              qDebug()<<" 數(shù)據(jù)庫文件加載失敗 " ;
              return ;
          }
          //打開數(shù)據(jù)庫
          DB=QSqlDatabase::addDatabase("QSQLITE");//創(chuàng)建QSQLITE數(shù)據(jù)庫連接
          DB.setDatabaseName(aFile); //數(shù)據(jù)庫名
          if(!DB.open())
          {
              //沒有數(shù)據(jù)庫文件則創(chuàng)建文件
              qDebug()<<"數(shù)據(jù)庫文件打開失敗";
              qDebug()<<DB.lastError().text();//輸出錯誤信息
           }
          qDebug()<< " 打開數(shù)據(jù)庫文件成功 " ;

      //從配置文件中讀取用戶名和密碼:
          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);

         //用戶注冊,向數(shù)據(jù)庫插入數(shù)據(jù)
          connect(ui->registerButton,&QPushButton::clicked,this,[=](){

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

          //創(chuàng)建自己需要使用的表格
              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!";
              }


          //插入數(shù)據(jù)
              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;
              }

          //查看數(shù)據(jù)
              //查看數(shù)據(jù)庫中有的表格的名字
              qDebug()<<"查看數(shù)據(jù)庫中所有的表:";
              QStringList str_table=DB.tables();
              qDebug()<<str_table;
              //查詢數(shù)據(jù)庫中的數(shù)據(jù)
              qDebug()<<"查看數(shù)據(jù)庫中數(shù)據(jù)";
              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());
              }

          });

      //用戶登錄:查詢數(shù)據(jù)

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

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

              //查詢數(shù)據(jù)
               QSqlQuery query;//操作數(shù)據(jù)庫
               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;
               }

               //獲取查詢的數(shù)據(jù)
               if(query.next())//獲取到數(shù)據(jù)
               {
                   QMessageBox::information(this,"登錄","登錄成功");

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

                   //在配置文件中記錄用戶賬號密碼
                   if(ui->checkBox->isChecked())//選中,也就是用戶已經(jīng)登錄
                   {
                       //創(chuàng)建配置文件
                       QSettings setting("config.ini",QSettings::IniFormat);//配置文件在工程目錄下
                       //把用戶賬號密碼寫到配置文件中
                       setting.beginGroup("section");//節(jié)開始
                       setting.setValue("account",account);
                       setting.setValue("password",password);
                       setting.endGroup();//結(jié)束
                   }
               }
               else
               {
                   QMessageBox::information(this,"登錄","登錄失敗");
               }
          });

}

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

#按鈕的ui實(shí)現(xiàn)

QT如何實(shí)現(xiàn)用戶登錄注冊

QT如何實(shí)現(xiàn)用戶登錄注冊

結(jié)果

QT如何實(shí)現(xiàn)用戶登錄注冊

QT如何實(shí)現(xiàn)用戶登錄注冊

QT如何實(shí)現(xiàn)用戶登錄注冊

到此,相信大家對“QT如何實(shí)現(xiàn)用戶登錄注冊”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

qt
AI