您好,登錄后才能下訂單哦!
本篇內(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)
結(jié)果
到此,相信大家對“QT如何實(shí)現(xiàn)用戶登錄注冊”有了更深的了解,不妨來實(shí)際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(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)容。