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

这篇具有很好参考价值的文章主要介绍了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();
}

窗口设计部分

Qt 数据库的注册和登录功能,c++,qt,数据库,游戏程序

最终效果图:

Qt 数据库的注册和登录功能,c++,qt,数据库,游戏程序Qt 数据库的注册和登录功能,c++,qt,数据库,游戏程序

Qt 数据库的注册和登录功能,c++,qt,数据库,游戏程序Qt 数据库的注册和登录功能,c++,qt,数据库,游戏程序文章来源地址https://www.toymoban.com/news/detail-731525.html

到了这里,关于Qt 数据库的注册和登录功能的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java连接数据库实现登录与注册小功能(小白版)

    准备工作: 创建数据库stu;        create database stu charset=utf8; 使用数据库stu;            use stu; 创建用户表user(id,username,password,nick) create table user(id int primary key auto_increment,username varchar(50),password varchar(50),nick varchar(50));   1.开始创建springboot工程,勾选Web-spring Web,  SQL-MyBatis Frame

    2024年02月08日
    浏览(42)
  • Unity3D实现MySql数据库登录与注册功能

    1、界面布局如下: 2、界面控件 1、封装MySql 2、编写登录、注册功能脚本 挂载LoginPanel脚本,并将控件映射到公共属性如下: 有问题请指出,谢谢!

    2024年02月11日
    浏览(67)
  • 使用QT制作贪吃蛇小游戏(含登录注册界面)

    login.h register.h user.h userlist.h widget.h login.cpp main.cpp register.cpp user.cpp userlist.cpp widget.cpp login.ui register.ui widget.ui

    2024年02月13日
    浏览(41)
  • 手把手教你实现:Android注册登录功能,通过本地服务器保存用户账号密码到数据库

    代码我放到文章最后面了 首先你需要电脑一台:如果没有电脑将会很难办呢 -----沃兹基硕德 下载并安装以下开发工具 Android Studio 官网最新版 用来开发 安卓App IntelliJ IDEA 官网最新版 用来开发 后端 ,处理安卓APP的请求 Navicat for MySql 官网最新版 数据库可视化工具,用来查看数

    2024年01月16日
    浏览(52)
  • 使用javaweb实现登录注册页面,并且对功能和业务进行分层 用户登录成功跳转到主页并展示数据库的商品的信息

    一、Servlet+JSP+JavaBean开发模式(MVC)介绍 Servlet+JSP+JavaBean模式(MVC)适合开发复杂的web应用,在这种模式下,servlet负责处理用户请求,jsp负责数据显示,javabean负责封装数据。 Servlet+JSP+JavaBean模式程序各个模块之间层次清晰,web开发推荐采用此种模式。 这里以一个最常用的用户登录

    2024年02月03日
    浏览(65)
  • Django-drf项目初始化:跨域、认证权限过滤、static静态资源路由,mysql数据库连接,登录注册功能

    码云地址:https://gitee.com/liuhaizhang/drf-project-initialization 项目目录结构: study_drf            -home         -static         -study_drf         -util         -manage.py pip install django #drf基于django pip install djangorestframework #drf框架 pip install mysqlclient #连接数据库 pip install djangorestframewo

    2024年02月03日
    浏览(67)
  • 登录注册页面连接数据库并完成注册(一)

    1:我们先从html开始,注释不多,希望谅解,下面是html页面的代码: 2:下面是一个css代码,可能比较乱: 3:然后我们看看样式是什么样子吧:  4:因为登录注册是在一个页面上面显示的,点击登录会把登录这个div页面隐藏,然后显示注册的div页面.利用的是点击事件;剩下的请看第二章哦!!!  

    2024年02月11日
    浏览(47)
  • Node.js连接数据库 实现注册、登录、判断注册

    Node.js连接数据库实现注册,登录,在登录时检测账号是否进行注册。 此创建文件夹可以不是使用Vue-cli进行创建,只是简单创建文件夹便可。 使用npm进行mysql插件的安装,cmd黑窗口运行下列指令 此指令运行完成,文件夹根目录出现 node_modules 文件 黑窗口运行 npm init 指令,出现

    2024年02月09日
    浏览(57)
  • 【项目实战】登录与注册业务的实现(前端+后端+数据库)

             本示例基于Vue.js和mint UI实现。 目录 一、数据库的创建 二、后端接口与数据库的连接 三、前端代码实现 1.注册页相关代码 2.注册页效果 3.登录页相关代码 4.登录页效果 四、注册登录演示 五、项目文件结构         此处以 Navicat 软件进行创建,新建数据库r

    2023年04月08日
    浏览(62)
  • QT学习笔记-开发环境编译Qt MySql数据库驱动与交叉编译Qt MySql数据库驱动

    如果需要在QT程序中实现与MySQL数据库的交互,那么必不可少的一环就是对Qt MySql数据库驱动的编译。 操作系统:Windows10 专业版 64位 Qt版本:Qt 5.15.2 开发环境Qt安装路径:D:Qt 交叉编译服务器:Ubuntu 18.4 交叉编译服务器Qt安装路径:/opt/Qt 目标芯片:rk3568 目标平台:arm64 Qt安装

    2024年02月11日
    浏览(78)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包