Qt 数据库的注册和登录功能

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include<QPushButton>
#include <QWidget>
#include <QDebug>
#include <QString>
#include <QMessageBox>
#include <QFile>
#include "client.h"
#include <QFileDialog>
#include <QSqlDatabase>
#include <QSqlQuery>          //执行sql
#include<QSqlRecord>         //数据库记录的类

QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE

class Widget : public QWidget
{
    Q_OBJECT

 signals:
    void jump();     //跳转页面的自定义函数     信号
public slots:
    void login_solt();   //登录页面的自定义的槽函数

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void on_loginBtn_clicked();

    void on_cancleBtn_clicked();

    void on_registerBtn_clicked();

private:
    Ui::Widget *ui;
    client *s;

    //定义一个数据库的类对象
    QSqlDatabase db;
};
#endif // WIDGET_H

widget.cpp

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

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);
    s =  new client;
    //更改窗口标题
    this->setWindowTitle("光与夜之恋");
    this->setWindowFlag(Qt::FramelessWindowHint);          //去掉窗口头部
    //logo图
    ui->logo->setPixmap(QPixmap(":/qt/a1.webp"));
    ui->logo->setScaledContents(true);
//    //用户名密码图
//    ui->userNamelab->setPixmap(QPixmap(":/qt/q1.webp"));
//    ui->userNamelab->setScaledContents(true);

//    ui->pwdlab->setPixmap(QPixmap(":/qt/2.webp"));
//    ui->pwdlab->setScaledContents(true);

    //设置账户密码

    ui->pwdEdit->setPlaceholderText("密码");
    ui->pwdEdit->setEchoMode(QLineEdit::Password);


    //将登录按钮连接到自定义的槽函数中
    connect(ui->loginBtn,&QPushButton::clicked,this,&Widget::login_solt);
    //将取消按钮连接到自定义的槽函数中
    connect(ui->cancleBtn,SIGNAL(clicked()),this,SLOT(close()));
    connect(this, &Widget::jump, s, &client::jump_slot);

    //数据库的操作
    if(!db.contains("reginst.db"))
    {
        //添加数据库
        db=QSqlDatabase::addDatabase("QSQLITE");
        //设置数据库名字
        db.setDatabaseName("reginst.db");

    }
    //打开数据库
    if(!db.open())
    {
        QMessageBox::information(this,"提示","数据库打开失败");
        return ;
    }
    //准备sql语句
    QString sql="create table if not exists zh_info("
                "username varchar(10) primary key,"
                "pwd varchar(10))";

    //准备语句执行者
    QSqlQuery querry(db);
    if(!querry.exec(sql))
    {
        QMessageBox::information(this,"失败","数据库创建失败");
        return;
    }
}

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

void Widget::login_solt()
{
    QString username=ui->userNameEdit->text();
    QString pwd=ui->pwdEdit->text();

}

void Widget::on_loginBtn_clicked()
{
    QString username=ui->userNameEdit->text();
    QString pwd=ui->pwdEdit->text();
    //确保每个编辑器中有数据
    if(username.isEmpty()||pwd.isEmpty())
    {
        QMessageBox::information(this,"提示","请将信息填充完整");
        return ;
    }
    //准备sql语句
    QSqlQuery query;
    QString sql = QString("SELECT username, pwd FROM zh_info WHERE username = '%1' AND pwd = '%2'")
            .arg(username).arg(pwd);
    //执行查询
    if (query.exec(sql) && query.next())
    {
        int ret = QMessageBox::information(this, "提示", "登录成功", QMessageBox::Ok);
        if(ret == QMessageBox::Ok)
        {
            emit jump();
            this->hide();
        }
    }
    else
    {
        //登录失败
        QMessageBox::information(this,"失败","用户名或密码错误");
    }
}


void Widget::on_registerBtn_clicked()
{
    QString username = ui->userNameEdit->text();
    QString pwd = ui->pwdEdit->text();
    //确保每个编辑器中有数据
    if (username.isEmpty() || pwd.isEmpty())
    {
        QMessageBox::information(this, "提示", "请将信息填充完整");
        return;
    }
    //准备sql查询语句
    QSqlQuery query;
    QString sql = QString("select username from zh_info where username = '%1'").arg(username);
    //执行查询
    if (query.exec(sql) && query.next())
    {
        //已存在相同用户名的记录,无法注册
        QMessageBox::information(this, "失败", "该用户名已被注册,请重新选择用户名");
    }
    else
    {
        //注册
        sql = QString("insert into zh_info(username, pwd) VALUES('%1', '%2')").arg(username).arg(pwd);
        if (query.exec(sql))
        {
            QMessageBox::information(this, "成功", "注册成功");
        }
        else
        {
            QMessageBox::information(this, "失败", "注册失败");
        }
    }
}
void Widget::on_cancleBtn_clicked()
{
    ui->pwdEdit->clear();
    ui->userNameEdit->clear();
}

 client.h

#ifndef CLIENT_H
#define CLIENT_H

#include <QDockWidget>
#include <QDebug>
#include <QString>
#include <QMessageBox>
namespace Ui {
class client;
}

class client : public QDockWidget
{
    Q_OBJECT

public slots:
    void jump_slot();
public:
    explicit client(QWidget *parent = nullptr);
    ~client();

private slots:
    void on_pushButton_2_clicked();

private:
    Ui::client *ui;
};

#endif // CLIENT_H

client.cpp

#include "client.h"
#include "ui_client.h"

client::client(QWidget *parent) :
    QDockWidget(parent),
    ui(new Ui::client)
{
    ui->setupUi(this);
    //更改窗口标题
    this->setWindowTitle("光与夜之恋");
    //logo图
    ui->logo->setPixmap(QPixmap(":/qt/592587c702e7f7674a6c7fa72fe21169.jpg"));
    ui->logo->setScaledContents(true);

}

client::~client()
{
    delete ui;
}
void client::jump_slot()
{
    this->show();
}

void client::on_pushButton_2_clicked()
{
 int ret =QMessageBox::information(this,"提示","该男人已经溜走",QMessageBox::Ok);
 if(ret==QMessageBox::Ok)
 {
     this->close();
 }
}

 main函数

#include "widget.h"

#include <QApplication>
#include "client.h"
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    Widget w;
    w.show();
//    client s;
//    QObject::connect(&w,&Widget::login_solt,&s,&client::jump_slot);
    return a.exec();
}

窗口设计部分

最终效果图:

c的弃子
关注 关注
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
qt实现用户登录与注册
希望我的博客,能帮上你解决学习中工作中所遇到的问题
11-11 457
qt实现用户登录与注册
Qt实现连接数据库实现登陆功能(附完整源码)
希望我的博客,能帮上你解决学习中工作中所遇到的问题
07-18 568
Qt实现连接数据库实现登陆功能(附完整源码)
Qt设计精美的登录注册界面(包含SQLite数据库应用)
weixin_45739654的博客
07-10 2万+
Qt设计较为美观好看的登录注册界面(包含SQLite数据库以及TCP通信的应用)
使用qt实现简单的登陆注册页面.zip
07-27
使用qt实现的简单的登陆注册,包括ui界面的设计。登陆注册通过dialog对话框实现,可以在主函数或mainwindow中调用。
QT实现用户登录注册功能
百创科技
07-24 929
本文实例为大家分享了QT实现用户登录注册的具体代码,供大家参考,具体内容如下。
QT用户登录注册数据库实现
m0_72847002的博客
09-21 583
【代码】QT用户登录注册数据库实现。
使用Qt开发一个登录界面
qq_25549309的博客
07-11 2523
在本文中,我们介绍了如何使用Qt创建一个简单的登录界面,并演示了如何获取用户输入和执行身份验证操作。通过结合QLineEdit、QPushButton和QMessageBox等组件,我们可以轻松地实现各种交互和事件处理,使得登录界面更加灵活和可扩展。在实际应用中,登录界面通常是一个非常关键的界面元素,涉及到身份验证和安全性等多个方面。因此,我们需要仔细考虑安全性和用户体验,以确保登录功能的稳定性和可靠性。
Qt登录注册数据库操作.zip
01-18
包括了登录界面的实现,可以注册账号,连接Sqlite数据库,此外还有一些其他的附加功能
简易Qt登录注册及登陆后菜单功能程序
05-03
3.设计数据库注册时信息录入数据库中,登录时从数据库中遍历信息,有则登录进入主界面,无则提示登录失败。 4.设计登陆后进入的主界面,主界面内,左上方会有文字提示“欢迎你!+用户名”的字样。主界面的正中央为...
qt实现用户登录
06-02
qt进行登录 void login::on_log_clicked() { if(ui->mingzi->text()=="wang"&&ui->mima->text()=="123"){ py *aa=new py(); aa->show(); this->hide(); } else{ error *as=new error(); as->show(); this->hide(); } }
QT登陆验证(连接mysql)
04-16
在MYSQL中创建表的数据,QT与MYSQL连接,进行登陆验证
Qt使用MVC、数据库单例模式实现登录注册
01-26
Qt使用MVC框架、sqlite3数据库、单例模式实现登录注册功能
QT+access数据库制作登陆界面的跳转(QT跳转页面)
08-03
https://blog.csdn.net/qq_46046959/article/details/119348823 博文彩蛋
QT实现注册登录,添加背景图片,界面跳转源码
03-28
里面包括了注册登录,并且将用户名密码写入数据库功能,还有可以给qt界面添加背景图,还实现了软键盘输入,无需在敲击键盘,最后界面跳转。
QT实现qq登录
Venusler的博客
09-21 534
【代码】QT实现qq登录。
QT实现登录功能
道亦无名
09-20 2467
代码如下: #include "mainwindow.h" #include "ui_mainwindow.h" MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); ui->passwordl...
Qt+QLite】Qt实现注册登录功能
weixin_43998552的博客
03-26 612
):定义了一个 SQL 语句,使用 insert into 命令将数据插入到 user 表格中的 username 和 password 列中。其中 %1 和 %2 是占位符,用于在后面的 arg() 方法中填入真实的值。:使用 arg() 方法将真实的用户名和密码填入占位符中,生成完整的 SQL 语句。
QT C++实践| 连接数据库的登录界面实现| 附源码
最新发布
Yaoyao2024的博客
03-05 733
在登录界面连接数据库,调用中的创建数据库连接。在关闭界面的函数内,关闭数据库,释放资源:if (db.isOpen()) {db.close();// 然后,从连接池中移除该连接遍历数据库,将用户名、密码依次和数据库中的信息进行对比,若有一样,则可以进入主界面。💁🏻‍♀️使用 QSqlQuery 来执行一个查询,并使用循环来遍历结果集。
Qt实现登录效果(超详细!超简单!)
热门推荐
qq_45677405的博客
08-13 2万+
title: Qt实现登录效果(超详细!超简单!):::tip🍓🍊从一个界面按登录跳转到另一个界面🍭🍓🍬:::more。
qt使用数据库实现登录
07-02
Qt中使用数据库实现登录功能可以通过以下步骤实现: 1. 首先,需要在Qt中连接到数据库。可以使用Qt提供的QSqlDatabase类来连接各种类型的数据库,例如SQLite、MySQL等。可以在代码中使用以下代码来连接到数据库: ``` QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE"); // 这里连接的是SQLite数据库,可以根据需要修改 db.setDatabaseName("database.db"); // 这里是数据库文件的路径和名称,可以根据需要修改 if (!db.open()) { qDebug() << "无法打开数据库文件!"; return; } ``` 这段代码创建了一个SQLite数据库连接,并打开了名为"database.db"的数据库文件。你可以根据需要修改数据库类型和文件名。 2. 接下来,需要在数据库中创建用户表。可以使用以下命令将用户表创建为名为"users"的表: ``` QSqlQuery query; query.exec("CREATE TABLE IF NOT EXISTS users (username TEXT PRIMARY KEY, password TEXT)"); if (query.lastError().type() != QSqlError::NoError) { qDebug() << "创建用户表失败:" << query.lastError().text(); return; } ``` 这段代码使用QSqlQuery类来执行SQL语句,在数据库中创建了一个名为"users"的表,该表包含用户名和密码字段。 3. 在登录界面中,用户输入用户名和密码后,可以使用以下代码来验证用户的用户名和密码是否正确: ``` QString username = ui->usernameLineEdit->text(); // 获取用户名输入框的文本 QString password = ui->passwordLineEdit->text(); // 获取密码输入框的文本 QSqlQuery query; query.prepare("SELECT username FROM users WHERE username = ? AND password = ?"); query.addBindValue(username); query.addBindValue(password); query.exec(); if (query.next()) { qDebug() << "登录成功!"; } else { qDebug() << "用户名或密码错误!"; } ``` 这段代码执行了一个查询语句,从"users"表中选择包含指定用户名和密码的记录。如果查询结果非空,说明用户名和密码正确,登录成功;否则,用户名或密码错误,登录失败。 以上就是使用Qt实现登录功能时使用数据库的一般步骤。当然,具体实现还取决于项目需求和数据库的类型,可以根据需求相应的修改和补充。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
写文章

热门文章

  • arm 点灯实验代码以及现象 3070
  • STM32 多功能按键中断 839
  • flash(闪存)基础操作 769
  • ARM | 传感器必要总线IIC 638
  • arm 汇编基础指令 618

最新评论

  • arm 点灯实验代码以及现象

    什么都干的派森: 老卷王了

  • arm 点灯实验代码以及现象

    白话机器学习: 写的非常详细,是一篇优质博客,干货满满,让我有了全新的认识,感谢博主分享,让我学到了很多,支持支持。

  • arm 点灯实验代码以及现象

    JiangnanPsyche: 您好,你用的是汇编语言吗

  • QT 绘画功能的时钟

    学术菜鸟小晨: 文章思路清晰,图文并茂,详略得当,三连支持,期待博主持续输出好文,期待更新

  • day1 作业

    CSDN-Ada助手: 恭喜你开始博客创作!标题“day1 作业”看起来很有激情和动力。在你的第一篇博客中,你能够分享你的学习经验和感想吗?接下来,我建议你可以尝试更多的主题,例如分享一些实用的技巧或者解决问题的方法,这样能够吸引更多读者的关注。希望你能继续保持谦虚的态度,努力提升自己的写作技巧,期待看到你更多精彩的博客作品! 推荐【每天值得看】:https://bbs.csdn.net/forums/csdnnews?typeId=21804&utm_source=csdn_ai_ada_blog_reply1

您愿意向朋友推荐“博客详情页”吗?

  • 强烈不推荐
  • 不推荐
  • 一般般
  • 推荐
  • 强烈推荐
提交

最新文章

  • python关于字符串基础学习
  • Python之海龟绘图
  • flash(闪存)基础操作
2024年3篇
2023年61篇

目录

目录

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

深圳SEO优化公司芜湖百度网站优化排名报价沈阳网站搭建泰州网站改版公司安阳seo推荐邢台SEO按天计费公司东营阿里店铺托管价格安顺推广网站哪家好诸城外贸网站制作推荐荷坳网站优化威海如何制作网站报价酒泉网页设计哪家好永新网站搜索优化哪家好柳州百度关键词包年推广报价通化建站多少钱大庆网站设计镇江seo网站推广价格滨州关键词按天扣费价格张掖如何制作网站哪家好湖州英文网站建设推荐丹竹头企业网站改版推荐平湖网站优化按天计费贺州网站排名优化多少钱福田网站制作设计价格抚州网站优化按天计费公司抚州网页制作价格上饶企业网站制作哪家好昌吉网站制作价格泉州建设网站公司平凉品牌网站设计哪家好红河营销网站歼20紧急升空逼退外机英媒称团队夜以继日筹划王妃复出草木蔓发 春山在望成都发生巨响 当地回应60岁老人炒菠菜未焯水致肾病恶化男子涉嫌走私被判11年却一天牢没坐劳斯莱斯右转逼停直行车网传落水者说“没让你救”系谣言广东通报13岁男孩性侵女童不予立案贵州小伙回应在美国卖三蹦子火了淀粉肠小王子日销售额涨超10倍有个姐真把千机伞做出来了近3万元金手镯仅含足金十克呼北高速交通事故已致14人死亡杨洋拄拐现身医院国产伟哥去年销售近13亿男子给前妻转账 现任妻子起诉要回新基金只募集到26元还是员工自购男孩疑遭霸凌 家长讨说法被踢出群充个话费竟沦为间接洗钱工具新的一天从800个哈欠开始单亲妈妈陷入热恋 14岁儿子报警#春分立蛋大挑战#中国投资客涌入日本东京买房两大学生合买彩票中奖一人不认账新加坡主帅:唯一目标击败中国队月嫂回应掌掴婴儿是在赶虫子19岁小伙救下5人后溺亡 多方发声清明节放假3天调休1天张家界的山上“长”满了韩国人?开封王婆为何火了主播靠辱骂母亲走红被批捕封号代拍被何赛飞拿着魔杖追着打阿根廷将发行1万与2万面值的纸币库克现身上海为江西彩礼“减负”的“试婚人”因自嘲式简历走红的教授更新简介殡仪馆花卉高于市场价3倍还重复用网友称在豆瓣酱里吃出老鼠头315晚会后胖东来又人满为患了网友建议重庆地铁不准乘客携带菜筐特朗普谈“凯特王妃P图照”罗斯否认插足凯特王妃婚姻青海通报栏杆断裂小学生跌落住进ICU恒大被罚41.75亿到底怎么缴湖南一县政协主席疑涉刑案被控制茶百道就改标签日期致歉王树国3次鞠躬告别西交大师生张立群任西安交通大学校长杨倩无缘巴黎奥运

深圳SEO优化公司 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化