最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

QT實現(xiàn)用戶登錄注冊功能

 更新時間:2022年06月14日 17:10:39   作者:一個有頭發(fā)的程序猿  
這篇文章主要為大家詳細介紹了QT實現(xiàn)用戶登錄注冊功能,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

本文實例為大家分享了QT實現(xiàn)用戶登錄注冊的具體代碼,供大家參考,具體內(nèi)容如下

1、login.h

#ifndef LOGIN_H
#define LOGIN_H

#include <QWidget>

namespace Ui {
class Login;
}

class Login : public QWidget
{
? ? Q_OBJECT

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

private slots:
? ? void on_btn_login_clicked();
? ? void on_btn_register_clicked();

private:
? ? Ui::Login *ui;
};

#endif // WIDGET_H

2、login.cpp

#include "login.h"
#include "ui_login.h"
#include "register.h"
#include "mainwindow.h"
#include <QMessageBox>
#include <QSqlQuery>
#include <QFile>
#include <QDebug>

Login::Login(QWidget *parent) :
? ? QWidget(parent),
? ? ui(new Ui::Login)
{
? ? ui->setupUi(this);
? ? ui->ledit_password->setEchoMode(QLineEdit::Password);
}

Login::~Login()
{
? ? delete ui;
}

void Login::on_btn_login_clicked()
{
? ? QString username = ui->ledit_username->text();
? ? QString password = ui->ledit_password->text();

? ? if(username == "" ||password == ""){
? ? ? ? QMessageBox::information(this,"警告","輸入不能為空",QMessageBox::Ok);
? ? }else{

? ? ? ? QSqlQuery query;
? ? ? ? query.prepare("select username,password from admin where username=:username and password = :password ");

? ? ? ? query.bindValue(":username", username);
? ? ? ? query.bindValue(":password", password);
? ? ? ? query.exec();
? ? ? ? if(!query.next())
? ? ? ? {
? ? ? ? ? ? //結果集為空
? ? ? ? ? ? //執(zhí)行某操作
? ? ? ? ? ? QMessageBox::information(this,"警告","用戶名或密碼錯誤!",QMessageBox::Ok);
? ? ? ? }
? ? ? ? else
? ? ? ? {
? ? ? ? ? ? QMessageBox::information(this,"提醒","登錄成功!",QMessageBox::Ok);
? ? ? ? ? ? MainWindow *m = new MainWindow;
? ? ? ? ? ? m->show();
? ? ? ? ? ? this->close();
? ? ? ? }
? ? }


}

void Login::on_btn_register_clicked()
{
? ? Register *r = new Register;
? ? r->show();
}

3、register.h

#ifndef REGISTER_H
#define REGISTER_H

#include <QWidget>

namespace Ui {
class Register;
}

class Register : public QWidget
{
? ? Q_OBJECT

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

private slots:
? ? void on_btn_logon_clicked();

private:
? ? Ui::Register *ui;
};

#endif // REGISTER_H

4、register.cpp

#include "register.h"
#include "ui_register.h"
#include <QButtonGroup>
#include <QMessageBox>
#include <QRegExp>
#include <QSqlQuery>

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

}

Register::~Register()
{
? ? delete ui;
}

void Register::on_btn_logon_clicked()
{
? ? QString username = ui->ledit_username->text();
? ? QString password = ui->ledit_pwd->text();
? ? QString name = ui->ledit_name->text();
? ? int age = ui->ledit_age->text().toInt();

? ? QButtonGroup *bg=new QButtonGroup(this);
? ? bg->addButton(ui->rbtn_male,0);//一個值為0
? ? bg->addButton(ui->rbtn_female,1);//一個值為1

? ? int sel=bg->checkedId();//取到你所選的radioButton的值

? ? QString gender;

? ? switch(sel)
? ? {
? ? case 0:
? ? ? gender="男";
? ? ? break;
? ? case 1:
? ? ? gender="女";
? ? ? break;
? ? default:
? ? ? gender="";
? ? break;

? ? }

? ? QSqlQuery query;
? ? query.prepare("select username from patient where username=:username");
? ? query.bindValue(":username", username);
? ? query.exec();
? ? if(query.next())
? ? {

? ? ? ? QMessageBox::information(this,"警告","用戶名已存在!",QMessageBox::Ok);

? ? }
? ? else
? ? {
? ? ? ? query.prepare("insert into patient(username,password,patientName,age,gender)"
? ? ? ? ? ? ? ? ? ? ? "values(:username,:password,:patientName,:age,:gender)");
? ? ? ? query.bindValue(":username", username);
? ? ? ? query.bindValue(":password",password);
? ? ? ? query.bindValue(":patientName", name);
? ? ? ? query.bindValue(":age", age);
? ? ? ? query.bindValue(":gender", gender);

? ? ? ? query.exec();
? ? ? ? QMessageBox::information(this,"警告","注冊成功!",QMessageBox::Ok);

? ? }
}

5、數(shù)據(jù)庫連接代碼

#ifndef CONNECTION
#define CONNECTION

#include <QSqlDatabase>
#include <QStringList>
#include <QString>
#include <QDebug>
#include <QSqlQuery>
#include <QMessageBox>

static bool createConnection()
{
? ? //測試用例:連接mysql數(shù)據(jù)庫,做一個基本的sql語句操作

? ? //1、對qt下數(shù)據(jù)庫的驅(qū)動進行遍歷查看
? ? QStringList drivers = QSqlDatabase::drivers();
? ? foreach (QString driver, drivers) {
? ? ? ? qDebug()<<drivers;

? ? }

? ? //2、打開數(shù)據(jù)庫過程
? ? QSqlDatabase db = QSqlDatabase::addDatabase("QMYSQL");
? ? //數(shù)據(jù)庫連接的信息進行配置
? ? db.setHostName("localhost");//設置主機名(數(shù)據(jù)庫所在電腦的名稱)
? ? db.setDatabaseName("medical_system");//設置數(shù)據(jù)庫名稱
? ? db.setUserName("root");
? ? db.setPassword("123456");
? ? //db.setPort(3306);//因為是本機,該段代碼可省略

? ? if(!db.open()){
? ? ? ? //打開失敗的情況
? ? ? ? qDebug()<<"Failed to connect";

? ? ? ? //實際情況下我們應該使用圖形化窗口提示打開失敗
? ? ? ? QMessageBox::critical(0,"無法打開數(shù)據(jù)庫","無法創(chuàng)建",QMessageBox::Yes);
? ? ? ? return false;
? ? }

? ? return true;


}

#endif // CONNECTION

運行結果

以上就是本文的全部內(nèi)容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • C++通過boost.date_time進行時間運算

    C++通過boost.date_time進行時間運算

    這篇文章介紹了C++通過boost.date_time進行時間運算的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • C++實現(xiàn)簡單圖書館管理系統(tǒng)

    C++實現(xiàn)簡單圖書館管理系統(tǒng)

    這篇文章主要為大家詳細介紹了C++實現(xiàn)簡單圖書館管理系統(tǒng),文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • select函數(shù)實現(xiàn)高性能IO多路訪問的關鍵示例深入解析

    select函數(shù)實現(xiàn)高性能IO多路訪問的關鍵示例深入解析

    這篇文章主要為大家介紹了select函數(shù)實現(xiàn)高性能IO多路訪問的關鍵示例深入解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-09-09
  • C++結構體中變長數(shù)組的使用問題分解刨析

    C++結構體中變長數(shù)組的使用問題分解刨析

    變長數(shù)組在C++中指的是集合(也叫容器)如vector就是C語言中,所有的數(shù)組都不定長,沒有下標越界的概念,數(shù)組實質(zhì)就是一個指針(由數(shù)組名充當)因此C語言中數(shù)組的長度沒有任何意義平常在C語言中講的不定長數(shù)組,其實就是指針
    2022-08-08
  • C語言數(shù)據(jù)結構不掛科指南之線性表詳解

    C語言數(shù)據(jù)結構不掛科指南之線性表詳解

    線性表是由?n(n≥0)個數(shù)據(jù)元素組成的有窮序列,這篇文章主要來和大家來了C語言數(shù)據(jù)結構中的線性表,感興趣的小伙伴可以跟隨小編一起了解一下
    2022-09-09
  • 頭文件不宜定義變量的原因全面解析

    頭文件不宜定義變量的原因全面解析

    以下是對頭文件不宜定義變量的原因進行了詳細的分析介紹,需要的朋友可以過來參考下
    2013-09-09
  • C++實現(xiàn)LeetCode(79.詞語搜索)

    C++實現(xiàn)LeetCode(79.詞語搜索)

    這篇文章主要介紹了C++實現(xiàn)LeetCode(79.詞語搜索),本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++ 封裝 DLL 供 C# 調(diào)用詳細介紹

    C++ 封裝 DLL 供 C# 調(diào)用詳細介紹

    這篇文章主要介紹了C++ 封裝 DLL 供 C# 調(diào)用(以C# 調(diào)用C++ 二次封裝的VLC播放庫為介質(zhì),支持回調(diào)函數(shù)的封裝),需要的朋友可以參考下面我文章的具體內(nèi)容
    2021-09-09
  • C++無法重載點符號、::、sizeof等的原因

    C++無法重載點符號、::、sizeof等的原因

    這篇文章主要介紹了C++無法重載點符號、::、sizeof等的原因的相關資料,需要的朋友可以參考下
    2016-05-05
  • C語言main()函數(shù)的參數(shù)問題詳解

    C語言main()函數(shù)的參數(shù)問題詳解

    這篇文章主要為大家詳細介紹了C語言main()函數(shù)的參數(shù)問題,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02

最新評論

海门市| 高邮市| 乐安县| 安国市| 海门市| 南昌市| 马关县| 布尔津县| 武清区| 宝山区| 朝阳县| 长乐市| 四子王旗| 德安县| 沭阳县| 阳曲县| 鄯善县| 扶沟县| 龙口市| 武清区| 昭通市| 辽宁省| 商水县| 鄂托克前旗| 根河市| 磐石市| 临安市| 云梦县| 七台河市| 大冶市| 咸丰县| 墨竹工卡县| 潜山县| 海伦市| 房产| 上林县| 阳泉市| 呈贡县| 呼伦贝尔市| 旬邑县| 兴海县|