QT-day5

1、添加注册功能到数据库

头文件

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QMessageBox>      //消息对话框类头文件
#include <QDebug>
#include <QPushButton>
#include <QSqlDatabase>     //数据库管理类
#include <QSqlQuery>        //执行sql语句的类
#include <QSqlRecord>       //数据库记录的类
#include "second.h"QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTsignals:void my_signal();       //定义一个无参无返回值的信号函数void jump();            //自定义跳转信号函数public:Widget(QWidget *parent = nullptr);~Widget();private slots:void my_slot();         //自定义无参无返回值槽函数void on_dengBtn_clicked();void on_quBtn_clicked();void on_zhuBtn_clicked();private:Ui::Widget *ui;second *s1;QSqlDatabase db;        //定义一个数据库的类对象
};
#endif // WIDGET_H

源文件

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);s1 = new second;//使用qt5版本,把登录、注册、取消按钮连接connect(ui->dengBtn, &QPushButton::clicked, this, &Widget::my_slot);connect(ui->quBtn, &QPushButton::clicked, this, &Widget::my_slot);connect(ui->zhuBtn, &QPushButton::clicked, this, &Widget::my_slot);connect(this, &Widget::jump, s1, &second::jump_slot);this->setWindowTitle("灵能事务所");     //设置窗口标题this->setWindowIcon(QIcon(":/pic/biao.jpg"));//判断自己的数据库对象中是否包含了要处理的数据库,如果没有包含,则添加一个数据库,如果包含了,就可以打开if(!db.contains("mydatabase.db")){//添加一个数据库,调用该类中的静态成员函数addDatabasedb = QSqlDatabase::addDatabase("QSQLITE");//设置数据库的名字db.setDatabaseName("mydatabase.db");}//此时已经有一个名为mydatabase.db的数据库// 打开数据库if(!db.open()){QMessageBox::information(this, "失败", "打开失败");return;}//需要使用sql语句进行创建表的操作//1、准备sql语句QString sql = "create table if not exists stu_info("    //创建表"zczh integer primary key,"               //注册账号,主键"zcmm integer)";                         //注册密码//准备语句执行者QSqlQuery querry;//让语句执行者执行sql语句if(!querry.exec(sql)){QMessageBox::information(this, "失败", "创建表失败");return;}
}Widget::~Widget()
{delete ui;
}void Widget::my_slot()
{//emit jump();
}//登录按钮对应的槽函数
void Widget::on_dengBtn_clicked()
{//传入账号密码QString zczh = ui->lineEdit1->text();QString zcmm = ui->lineEdit2->text();QString sql = QString("select * from stu_info where zczh = '%1' and zcmm = '%2' ").arg(zczh).arg(zcmm);//准备语句执行者QSqlQuery querry;if(!querry.exec(sql)){//1、调用构造函数实例化对象QMessageBox::information(this, "失败", "登录失败");//3、对结果进行判断if(QMessageBox::Ok){ui->lineEdit1->clear();ui->lineEdit2->clear();qDebug()<<"继续登录";}else if(QMessageBox::Cancel){close();}}else{//1、调用构造函数实例化对象QMessageBox::information(this, "成功", "登录成功");//3、对结果进行判断if(QMessageBox::Ok){emit jump();}}}//取消
void Widget::on_quBtn_clicked()
{//1、调用静态函数实例化对象int ret = QMessageBox::information(this,              //父组件"问题",              //对话框标题"是否确定退出登录",            //对话框文本内容QMessageBox::Yes | QMessageBox::No,    //对话框提供的按钮QMessageBox::No);          //默认选中的按钮//3、对结果进行判断if(ret == QMessageBox::Yes){close();}
}//注册
void Widget::on_zhuBtn_clicked()
{//获取ui界面中要录入的数据QString zczh = ui->lineEdit1->text();QString zcmm = ui->lineEdit2->text();//要确保每个编辑器中都有数据if(zczh.isEmpty() || zcmm.isEmpty()){QMessageBox::information(this, "提示", "账号或密码为空,请重新输入");return ;}//准备sql语句QString sql = QString("insert into stu_info(zczh, zcmm)""values('%1', '%2')").arg(zczh).arg(zcmm);//准备语句执行者QSqlQuery querry;if(!querry.exec(sql)){QMessageBox::information(this, "失败", "注册失败");return;}else{QMessageBox::information(this, "成功", "注册成功");}
}

ui界面:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/84310.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Vue路由和Node.js环境搭建

文章目录 一、vue路由1.1 简介1.2 SPA1.3 实例 二、Node.js环境搭建2.1 Node.js简介2.2 npm2.3 环境搭建2.3.1 下载解压2.3.2 配置环境变量2.3.3 配置npm全局模块路径和cache默认安装位置2.3.4 修改npm镜像提高下载速度 2.4 运行项目 一、vue路由 1.1 简介 Vue 路由是 Vue.js…

C++项目:仿mudou库实现高性能高并发服务器

文章目录 一、实现目标二、前置知识&#xff08;一&#xff09;HTTP服务器1.概念2.Reactor模型&#xff1a;3.分类 一、实现目标 仿muduo库One Thread One Loop式主从Reactor模型实现高并发服务器&#xff1a; 通过咱们实现的高并发服务器组件&#xff0c;可以简洁快速的完成⼀…

【深度学习】卷积神经网络(LeNet)【文章重新修改中】

卷积神经网络 LeNet 前言LeNet 模型代码实现MINST代码分块解析1 构建 LeNet 网络结构2 加载数据集3 初始化模型和优化器4 训练模型5 训练完成 完整代码 Fashion-MINST代码分块解析1 构建 LeNet 网络结构2 初始化模型参数3 加载数据集4 定义损失函数和优化器5 训练模型 完整代码…

云服务器ECS_云主机_服务器托管_计算-阿里云

阿里云服务器是什么&#xff1f;云服务器ECS是一种安全可靠、弹性可伸缩的云计算服务&#xff0c;云服务器可以降低IT成本提升运维效率&#xff0c;免去企业或个人前期采购IT硬件的成本&#xff0c;阿里云服务器让用户像使用水、电、天然气等公共资源一样便捷、高效地使用服务器…

新手怎样快速上手接口测试?掌握这几个知识点直接起飞!

接口测试是测试系统组件间接口的一种方式&#xff0c;接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是检查数据的增删改查操作&#xff0c;以及系统之间的逻辑关系等 接口的几种类型 接口的类型包括&#xff1a;post &#xff0c;get&am…

沉积物微体古生物鉴定

声明 本文是学习GB-T 42629.4-2023 国际海底区域和公海环境调查规程 第4部分&#xff1a;海洋沉积物物理特性调查. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本文件规定了国际海底区域和公海环境调查中的沉积物组成、物理力学性质、生物…

【C++】unordered_map与unorder_set的封装(哈希桶)

文章目录 前言一、模板参数的改造二、模板的特例化操作三、仿函数的妙用四、unordered迭代器基本操作1.const迭代器注意&#xff1a;2.HashTable与HTIterator的冲突 五、迭代器的构造问题六、完整代码1.hash_bucket.h2.unordered_set.h3.unordered_map.h 前言 我们开辟一个指针…

使用LDA(线性判别公式)进行iris鸢尾花的分类

线性判别分析((Linear Discriminant Analysis &#xff0c;简称 LDA)是一种经典的线性学习方法&#xff0c;在二分类问题上因为最早由 [Fisher,1936] 提出&#xff0c;亦称 ”Fisher 判别分析“。并且LDA也是一种监督学习的降维技术&#xff0c;也就是说它的数据集的每个样本都…

驱动开发--汇总

一&#xff0c;【驱动相关概念】 1&#xff0c;什么是驱动 能够驱使硬件实现特定功能的软件代码 根据驱动程序是否依赖于系统内核将驱动分为裸机驱动和系统驱动 2&#xff0c;逻辑驱动和系统驱动的区别 裸机驱动&#xff1a;编写的驱动代码中没有进行任何内核相关API的调用…

Flutter插件的制作和发布

Flutter制作插件有两种方式&#xff08;以下以android和ios为例&#xff09;&#xff1a; 目录 1.直接在主工程下的android和ios项目内写插件代码&#xff1a;2.创建独立Flutter Plugin项目&#xff0c;制作各端插件后&#xff0c;再引入项目&#xff1a;1. 创建Flutter Plugin…

Webpack打包CSS文件,解决You may need an appropriate loader to handle this file type报错

在项目文件夹下创建webpack.config.js文件&#xff0c;该文件就是Webpack的配置文件 注意&#xff1a;该文件中遵循Node.js的代码格式规范 &#xff0c;需要对导出配置文件中的内容 Webpack在默认情况下只能打包js文件&#xff0c;如果我们希望他能够打包其他类型的文件&#…

物联网安全优秀实践:2023年设备保护指南

物联网的发展可谓是革命性的&#xff0c;数十亿台设备实时互连、通信和共享数据。因此&#xff0c;考虑物联网安全的最佳实践至关重要。 物联网的重要性日益上升 在数字时代&#xff0c;物联网(IoT)已成为一股革命力量&#xff0c;重塑了企业运营和个人生活方式。从调节家庭温…

堆的OJ题

&#x1f525;&#x1f525; 欢迎来到小林的博客&#xff01;&#xff01;       &#x1f6f0;️博客主页&#xff1a;✈️林 子       &#x1f6f0;️博客专栏&#xff1a;✈️ 小林的算法笔记       &#x1f6f0;️社区 :✈️ 进步学堂       &am…

中国数据库走向国际的门槛: 15分钟准则

在十五分钟之内跑通第一条SQL 笔者曾经负责国内某Top云厂商的数据库的海外业务和产品设计。简单的说包括TP&#xff0c;AP&#xff0c;NoSQL和Utility的所有数据库相关产品&#xff0c;负责除中国大陆以外所有的业务和客户。三年时间撞墙的教训实在不少。 在官方宣传上&#…

Scala 高阶:Scala中的模式匹配

一、概述 Scala中的模式匹配&#xff08;case&#xff09;类似于Java中的switch...case&#xff0c;但是Scala的模式匹配功能更为强大。通过模式匹配&#xff0c;可以匹配更复杂的条件和数据结构&#xff0c;包括常量、类型、集合、元组等。而 Java 的 switch 语句只能用于匹配…

算法分析与设计编程题 贪心算法

活动安排问题 题目描述 解题代码 vector<bool> greedySelector(vector<vector<int>>& intervals) {int n intervals.size();// 将活动区间按结束时间的从小到大排序auto cmp [](vector<int>& interval1, vector<int>& interval2…

YOLOv5,YOLOv8添加ASFF(自适应空间特征融合)

ASFF&#xff1a;Adaptively Spatial Feature Fusion (自适应空间特征融合) 论文来源&#xff1a;Learning Spatial Fusion for Single-Shot Object Detection 代码地址&#xff1a;ASFF 1.背景 不同特征尺度之间的不一致性是基于特征金字塔的单阶段检测器的主要缺陷。 本文…

【VastbaseG100】 FATAL: The account has been locked.

使用VastbaseG100 数据库&#xff0c;查询数据报错。 org.postgresql.util.PSQLException: FATAL: The account has been locked. 帐户已被锁定。 解锁账户呗 ALTER ROLE doc ACCOUNT UNLOCK;ALTER ROLE 用户名 ACCOUNT UNLOCK; 修改密码 ALTER ROLE doc IDENTIFIED BY ZhangS…

Git小乌龟不弹add push commit的方法

1.关于使用Git小乌龟无法弹出Add菜单的问题 第一次使用小乌龟软件&#xff0c;发现可以正常将程序从Gitee仓库中克隆到本地&#xff0c;但是在将本地的程序上传到Gitee仓库中时&#xff0c;TortoiseGit无法弹出Add那一系列菜单&#xff0c;如下图所示&#xff1a; 2.解决方法 …

开源日报 0821:帮你修复老旧照片

这篇文章总结了几个开源项目的特点和优势。其中包括了 Python 资源列表、金融研究工具、动画精灵程序、游戏和旧照片修复项目等。这些项目提供了丰富的功能和技术支持&#xff0c;用户可以根据自己的需求进行定制和改进。总的来说&#xff0c;这些开源项目为开发者和用户提供了…