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.rhkb.cn/news/141107.html

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

相关文章

ChatGPT详细搭建教程+支持AI绘画

一、AI创作系统 SparkAi系统是基于很火的GPT提问进行开发的Ai智能问答系统。本期针对源码系统整体测试下来非常完美&#xff0c;可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署AI创作ChatGPT系统&#xff1f;小编这里写一个详细图文教程吧&#x…

SpringBoot 之配置加密

Jasypt库的使用 Jasypt是一个Java简易加密库&#xff0c;用于加密配置文件中的敏感信息&#xff0c;如数据库密码。 Jasypt库与springboot集成&#xff0c;在实际开发中非常方便。 1、引入依赖 <dependency><groupId>com.github.ulisesbocchio</groupId>&…

构建工具Webpack简介

一、构建工具 当我们习惯了Node中使用ES模块化编写代码以后&#xff0c;用原生的HTML、CSS、JS这些东西会感觉到各种不便。比如&#xff1a;不能放心的使用模块化规范&#xff08;浏览器兼容性问题&#xff09;、即使可以使用模块化规范也会面临模块过多时的加载问题。 这时候…

当当网商品详情数据接口

当当网商品详情数据接口可以通过当当网的开放平台获取相关信息。您可以注册当当开放平台账号&#xff0c;并按照要求提交申请获取API接口的调用凭证。获得授权后&#xff0c;您将会收到一组AccessKey和SecretKey。使用编程语言&#xff08;如Java&#xff09;调用API接口&#…

《计算机网络》——应用层

2.1 应用层协议原理&#xff08;P54&#xff09; 研发网络应用的核心是写出能够运行在不同端系统和通过网络彼此交流的程序。 2.1.1 网络应用程序体系结构 两种主流的应用体系结构&#xff1a;客户-服务器体系结构、对等体系结构。 客户-服务器体系&#xff1a;服务器是一个…

适合新手自学的网络安全基础技能“蓝宝书”:《CTF那些事儿》

CTF比赛是快速提升网络安全实战技能的重要途径&#xff0c;已成为各个行业选拔网络安全人才的通用方法。但是&#xff0c;本书作者在从事CTF培训的过程中&#xff0c;发现存在几个突出的问题&#xff1a; 1&#xff09;线下CTF比赛培训中存在严重的“最后一公里”问题&#xf…

【项目实战】Linux系统下jar包自启动

什么是jar包自启动 在Linux系统中&#xff0c;"jar包自启动"是指通过配置将Java程序打包成可执行的Jar文件&#xff0c;并设置其在系统启动时自动运行。以下是与jar包自启动相关的一些概念&#xff1a; Jar文件&#xff1a;Jar&#xff08;Java Archive&#xff09…

51单片机光照强度检测自动路灯开关仿真( proteus仿真+程序+报告+讲解视频)

51单片机光照强度检测自动路灯开关仿真( proteus仿真程序报告讲解视频&#xff09; 仿真图proteus7.8及以上 程序编译器&#xff1a;keil 4/keil 5 编程语言&#xff1a;C语言 设计编号&#xff1a;S0052 讲解视频 基于51单片机的光照检测自动路灯控制仿真设计( proteus仿…

Day56:组件库封装-TypeScript入门

配置 安装tsc工具进行编译 npm i typescript -g 查看版本号&#xff1a;tsc -v 编译ts代码-需要使用tsc编译之后才能运行&#xff0c;TS为JS的衍生&#xff0c;浏览器不能直接识别TS语法&#xff1a;tsc xxx.ts 运行ts代码&#xff1a;node xxx.js 或者直接运行ts代码——t…

【从0学习Solidity】52. EIP712 类型化数据签名

【从0学习Solidity】 52. EIP712 类型化数据签名 博主简介&#xff1a;不写代码没饭吃&#xff0c;一名全栈领域的创作者&#xff0c;专注于研究互联网产品的解决方案和技术。熟悉云原生、微服务架构&#xff0c;分享一些项目实战经验以及前沿技术的见解。关注我们的主页&#…

ChatGPT的问世给哪些行业带来了冲击?

目录 引言Chat GPT 对行业的影响在线客服和智能客服行业传统自动回复机器人的局限性Chat GPT 的提升能力 教育培训行业个性化学习需求的挑战Chat GPT 的个性化优势 金融保险行业客户服务的变革Chat GPT 的智能化应用 医疗健康领域自助诊断及咨询的便利性Chat GPT 在医疗领域的应…

vue项目打包部署到服务器,报错。

这个是因为后端部署服务器时&#xff0c;名称没有对上&#xff0c;不是前端的问题&#xff0c;后端配置名称和前端的包名称保持一致就可以了。

轻量级c语言开源日志库log.c介绍 - 实现不同级别和参数化日志打印

前言 c语言没有现成的日志库&#xff0c;如果要记录日志&#xff0c;需要自己封装一个日志库。如果要实现日志级别和参数打印&#xff0c;还是比较麻烦的&#xff0c;正好在github找到了一个c语言开源日志库&#xff0c;可以实现日志级别打印&#xff0c;参数打印&#xff0c;…

SAP PO运维(四):适配器消息监控

登录SAP PO系统,点击“Configuration and Monitoring Home”,使用PISUPER账号登录: 2、选择“适配器引擎->消息监控器”: 3、查看是否有报错消息: 双击报错的数字,筛选出报错的条目(可以根据状态、接口命名空间等来筛选):常见的报错消息有: 接口配置问题:字段为空值…

好题记录 Leetcode 394.字符串解码 中等难度

方法一&#xff1a;递归 思路很简单&#xff0c;比较好理解&#xff0c;注意细节处理&#xff01;&#xff01;&#xff01; class Solution { public:string decodeString(string s) {string ans;for(int i0;s[i]!0;i){if(s[i]>a&&s[i]<z)anss[i];if(s[i]>…

十四、流式编程(4)

本章概要 终端操作 数组循环集合组合匹配查找信息数字流信息 终端操作 以下操作将会获取流的最终结果。至此我们无法再继续往后传递流。可以说&#xff0c;终端操作&#xff08;Terminal Operations&#xff09;总是我们在流管道中所做的最后一件事。 数组 toArray()&…

实时更新进度条:JavaScript中的定时器和异步编程技巧

前言 在Web开发中&#xff0c;有许多场景需要实时地更新页面上的进度&#xff0c;例如上传文件、数据处理等。本文将介绍如何利用JavaScript中的定时器和异步编程技巧来实现实时更新进度&#xff0c;并探讨一些其他解决方案。 处理进度实时更新&#xff1a; 利用异步编程实现实…

速卖通商品详情数据接口

速卖通商品详情数据接口&#xff08;aliexpress商品详情API接口&#xff09;可以获取到速卖通商品的详细信息&#xff0c;如商品标题、价格、库存、详情描述、图片等。 速卖通商品详情API接口是速卖通提供的一种产品数据接口&#xff0c;可以帮助速卖通卖家快速地将产品分类、…

Mysql主从数据恢复随笔

目录 1.使用pt-table-checksum插件安装方式如下 2.在主节点执行检查数据同步情况 3.同步检查出现的问题 3.1没有sock文件 3.2 Authentication plugin ‘sha256_password’ cannot be loaded: /usr/lib64/mysql/plugin/sha256_password.so: 无法打开共享对象文件: 没有那个文…

【刷题笔记9.24】LeetCode:二叉树最大深度

LeetCode&#xff1a;二叉树最大深度 1、题目描述&#xff1a; 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 二、思路与算法 如果我们知道了左子树和右子树的最大深度 lll 和 rrr&#xff0c;…