QTC++ day12
注册登录界面
widget.h
#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QIcon>
#include <QPushButton>
#include <QLineEdit>
#include <QLabel>
#include <QDebug>
#include <QMessageBox>//消息对话框类
#include "second.h"
#include <QSqlDatabase>//数据库管理类
#include <QSqlQuery>//执行sql语句类
#include <QSqlRecord>//数据库记录的类
#include "zhuce.h" //注册头文件
QT_BEGIN_NAMESPACE
namespace Ui { class widget; }
QT_END_NAMESPACEclass widget : public QWidget
{Q_OBJECT
signals://该权限下定义属于自己的信号void my_signal(QString msg);//自定义一个有参无返回值的信号函数
private:void on_btn1_clicked();//自定义的槽函数声明void on_btn2_clicked();//自定义的槽函数声明void on_btn3_clicked();
public:widget(QWidget *parent = nullptr);~widget();
signals:void jump();//自定义跳转信号函数void jump1();
public://void jump_slot2();private:Ui::widget *ui;//自定义一个btn1QPushButton *btn1;QPushButton *btn2;QPushButton *btn3;QLineEdit *edit2;QLineEdit *edit1;Second *s1;QSqlDatabase db; //定义一个数据库的类对象zhuce *s2;
};
#endif // WIDGET_H
zhuce.h
#ifndef ZHUCE_H
#define ZHUCE_H#include <QWidget>
#include <QLineEdit>
#include <QLabel>
#include <QIcon>
#include <QPushButton>
#include <QMessageBox>
#include <QSqlDatabase>
#include <QSqlQuery>//执行sql语句类
#include <QSqlRecord>//数据库记录的类
//#include "widget.h"
namespace Ui {
class zhuce;
}class zhuce : public QWidget
{Q_OBJECT
private:void on_btn2_clicked();//自定义的槽函数声明void on_btn3_clicked();
public:void jump_slot1();
signals://void jump2();public:explicit zhuce(QWidget *parent = nullptr);~zhuce();private:Ui::zhuce *ui;QLineEdit *edit2;//密码QLineEdit *edit1;//用户名QLineEdit *edit3;//确认密码QPushButton *btn2;QPushButton *btn3;QSqlDatabase db; //定义一个数据库的类对象//widget *s3;
};#endif // ZHUCE_H
widget.cpp
#include "widget.h"widget::widget(QWidget *parent): QWidget(parent)
{//登录成功的界面s1=new Second;connect(this,&widget::jump,s1,&Second::jump_slot);//注册的界面s2=new zhuce;connect(this,&widget::jump1,s2,&zhuce::jump_slot1);//添加数据库if(!db.contains("mysql.db")){//添加数据库db=QSqlDatabase::addDatabase("QSQLITE");//设置数据库名字db.setDatabaseName("mysql.db");}//打开数据库if(!db.open()){QMessageBox::information(this,"失败","数据库打开失败");return;}//准备sql语句对表进行创建QString sql="create table if not exists stu_info(""name varchar(10) primary key,"//用户名"password varchar(20))";//密码//语句执行者QSqlQuery querry;if(!querry.exec(sql)){QMessageBox::information(this,"失败","数据库创建失败");return;}this->setFixedSize(550,400);//设置固定尺寸this->setWindowTitle("Widget");//设置窗口标题this->setWindowIcon(QIcon("D:\\icon\\wodepeizhenshi.png"));//设置窗口图标//实例化一个标签QLabel *lab1 = new QLabel;lab1->setParent(this);lab1->resize(550,215);//重新设置尺寸//lab1->setAlignment(Qt::AlignCenter);//文本对齐lab1->setPixmap(QPixmap("D:\\icon\\logo.png"));lab1->setScaledContents(true);//设置内容自适应QLabel *lab3 = new QLabel;lab3->setParent(this);//指定父组件lab3->resize(40,40);//重新设置尺寸lab3->move(100,220);//lab3->setAlignment(Qt::AlignCenter);lab3->setPixmap(QPixmap("D:\\icon\\userName.jpg"));lab3->setScaledContents(true);//设置内容自适应QLabel *lab2 = new QLabel;lab2->setParent(this);lab2->resize(40,40);//重新设置尺寸lab2->move(100,270);lab2->setPixmap(QPixmap("D:\\icon\\passwd.jpg"));lab2->setScaledContents(true);//设置内容自适应// 实例化一个行编辑器edit1 = new QLineEdit(this);edit1->resize(250,40);edit1->move(lab3->x()+50,lab3->y());// 实例化一个行编辑器edit2 = new QLineEdit(this);edit2->resize(250,40);edit2->move(lab2->x()+50,lab2->y());edit2->setEchoMode(QLineEdit::Password);//设置回显模式//实例化一个按钮并给定图标,文本内容,父组件btn1 = new QPushButton(QIcon("D:\\icon\\login.png"), "登录", this);btn1->resize(100,50);//设置按钮大小btn1->move(225,325);//设置按钮移动位置connect(this->btn1,&QPushButton::clicked,this,&widget::on_btn1_clicked);btn3 = new QPushButton(QIcon("D:\\icon\\R-C.jpg"), "注册", this);btn3->resize(btn1->size());//设置按钮大小btn3->move(btn1->x()-150,btn1->y());//设置按钮移动位置connect(this->btn3,&QPushButton::clicked,this,&widget::on_btn3_clicked);btn2 = new QPushButton(QIcon("D:\\icon\\cancel.png"),"取消", this);btn2->resize(btn1->size());btn2->move(btn1->x()+150,btn1->y());connect(this->btn2,&QPushButton::clicked,this,&widget::on_btn2_clicked);
}
//登录按钮
void widget::on_btn1_clicked()
{//获取界面姓名QString name = this->edit1->text();//准备sql语句QString sql = QString("select * from stu_info where name='%1'").arg(name);//准备执行者QSqlQuery querry;if(!querry.exec(sql)){QMessageBox::information(this, "提示", "登录失败");return;}else{//1、调用构造函数实例化对象QMessageBox box(QMessageBox::Information,//图标"信息对话框",//对话框标题"登录成功",//对话框文本内容QMessageBox::Ok,//提供的按钮this);//父组件box.setDefaultButton(QMessageBox::Ok);//将OK设置为默认按钮//2、调用exec函数运行对话框int ret=box.exec();//3、对结果进行判断if(ret==QMessageBox::Ok){emit jump();this->hide();}}
}
//取消按钮
void widget::on_btn2_clicked()
{//1、调用构造函数实例化对象QMessageBox box(QMessageBox::Question,//图标"问题对话框",//对话框标题"是否确定取消登录?",//对话框文本内容QMessageBox::Yes|QMessageBox::No,//提供的按钮this);//父组件box.setDefaultButton(QMessageBox::No);//将no设置为默认按钮//2、调用exec函数运行对话框int ret=box.exec();//3、对结果进行判断if(ret==QMessageBox::Yes){close();}else if(ret==QMessageBox::No){}
}
void widget::on_btn3_clicked()
{emit jump1();//QWidget::hide();
}
widget::~widget()
{
}/*void widget::jump_slot2()
{this->show();
}*/
zhuce.cpp
#include "zhuce.h"
#include "ui_zhuce.h"zhuce::zhuce(QWidget *parent) :QWidget(parent),ui(new Ui::zhuce)
{//注册的界面//s3=new widget;//connect(this,&zhuce::jump2,s3,&widget::jump_slot2);this->setFixedSize(550,500);//设置固定尺寸this->setWindowTitle("注册");//设置窗口标题this->setWindowIcon(QIcon("D:\\icon\\wodepeizhenshi.png"));//设置窗口图标//实例化一个标签QLabel *lab = new QLabel;lab->setParent(this);lab->resize(550,215);//重新设置尺寸//lab1->setAlignment(Qt::AlignCenter);//文本对齐lab->setPixmap(QPixmap("D:\\icon\\logo.png"));lab->setScaledContents(true);//设置内容自适应ui->setupUi(this);QLabel *lab1 = new QLabel;lab1->setParent(this);//指定父组件lab1->resize(150,40);//重新设置尺寸lab1->move(100,220);//lab3->setAlignment(Qt::AlignCenter);lab1->setText("用户名:");lab1->setScaledContents(true);//设置内容自适应QLabel *lab2 = new QLabel;lab2->setParent(this);lab2->resize(150,40);//重新设置尺寸lab2->move(100,270);lab2->setText("密码:");lab2->setScaledContents(true);//设置内容自适应QLabel *lab3 = new QLabel;lab3->setParent(this);lab3->resize(150,40);//重新设置尺寸lab3->move(100,320);lab3->setText("确认密码:");lab3->setScaledContents(true);//设置内容自适应// 实例化一个行编辑器edit1 = new QLineEdit(this);edit1->resize(250,40);edit1->move(lab1->x()+80,lab1->y());// 实例化一个行编辑器edit2 = new QLineEdit(this);edit2->resize(250,40);edit2->move(lab2->x()+80,lab2->y());edit2->setEchoMode(QLineEdit::Password);//设置回显模式edit3 = new QLineEdit(this);edit3->resize(250,40);edit3->move(lab3->x()+80,lab3->y());edit3->setEchoMode(QLineEdit::Password);//设置回显模式btn3 = new QPushButton(QIcon("D:\\icon\\R-C.jpg"), "注册", this);btn3->resize(100,50);//设置按钮大小btn3->move(125,400);//设置按钮移动位置connect(this->btn3,&QPushButton::clicked,this,&zhuce::on_btn3_clicked);btn2 = new QPushButton(QIcon("D:\\icon\\cancel.png"),"取消", this);btn2->resize(100,50);btn2->move(325,400);connect(this->btn2,&QPushButton::clicked,this,&zhuce::on_btn2_clicked);//添加数据库if(!db.contains("mysql.db")){//添加数据库db=QSqlDatabase::addDatabase("QSQLITE");//设置数据库名字db.setDatabaseName("mysql.db");}//打开数据库if(!db.open()){QMessageBox::information(this,"失败","数据库打开失败");return;}
}zhuce::~zhuce()
{delete ui;
}
//取消
void zhuce::on_btn2_clicked()
{//1、调用构造函数实例化对象QMessageBox box(QMessageBox::Question,//图标"问题对话框",//对话框标题"是否确定取消注册?",//对话框文本内容QMessageBox::Yes|QMessageBox::No,//提供的按钮this);//父组件box.setDefaultButton(QMessageBox::No);//将no设置为默认按钮//2、调用exec函数运行对话框int ret=box.exec();//3、对结果进行判断if(ret==QMessageBox::Yes){close();}else if(ret==QMessageBox::No){}
}
void zhuce::on_btn3_clicked()
{//记录要录入的数据QString name=this->edit1->text();QString password=this->edit3->text();if(this->edit2->text()!=this->edit3->text()&&this->edit2->text()!=0&&this->edit3->text()!=0){QMessageBox::information(this,"失败","请输入相同的密码");return;}//准备sql语句QString sql=QString("insert into stu_info(name,password)""values('%1','%2')").arg(name).arg(password);//准备执行语句者QSqlQuery querry;if(!querry.exec(sql)){QMessageBox::information(this,"失败","注册失败");return;}else{QMessageBox::information(this,"成功","注册成功");//emit jump2();this->edit1->clear();this->edit2->clear();this->edit3->clear();this->close();//parentWidget()->show();}
}
void zhuce::jump_slot1()
{this->show();
}
思维导图:

相关文章:
QTC++ day12
注册登录界面 widget.h #ifndef WIDGET_H #define WIDGET_H#include <QWidget> #include <QIcon> #include <QPushButton> #include <QLineEdit> #include <QLabel> #include <QDebug> #include <QMessageBox>//消息对话框类 #inc…...
Vue3中使用Proxy API取代defineProperty API的原因
目录 一、前言 二、defineProperty API的限制和问题 三、Proxy API的优势和特性 四、Vue3.0中使用Proxy API的原因 五、Proxy API的局限性和注意事项 一、前言 Vue3.0是Vue.js框架的最新版本,它在底层进行了许多重要的改进。其中最引人注目的变化之一是它转而…...
构建工具Webpack简介
一、构建工具 当我们习惯了Node中使用ES模块化编写代码以后,用原生的HTML、CSS、JS这些东西会感觉到各种不便。比如:不能放心的使用模块化规范(浏览器兼容性问题)、即使可以使用模块化规范也会面临模块过多时的加载问题。 这时候…...
Docker部署单点Elasticsearch与Kibana
一 、 创建网络 因为需要部署kibana容器,因此需要让es和kibana容器互联。这里创建一个网络: docker network create es-net # 创建一个网络名称为:es-net 二 、拉取并加载镜像 方式一 docker pull elasticsearch:7.12.1 版本为elasticsearch的7…...
opencv实现仿射变换和透射变换
##1, 什么是仿射变换? 代码实现 import numpy as np import cv2 as cv import matplotlib.pyplot as plt#设置字体 from pylab import mpl mpl.rcParams[font.sans-serif] [SimHei]#图像的读取 img cv.imread("lena.png")#仿射变换 row…...
抖音seo账号矩阵源码系统
1. 开通多个抖音账号,并将它们归纳为一个账号矩阵系统。 2. 建立一个统一的账号管理平台,以便对这些账号进行集中管理,包括账号信息、内容发布、社区交互等。 3. 招募专业的运营团队,对每个账号进行精细化运营,包括内…...
性能优化之防抖
方法1:利用lodash库提供的防抖来处理 方法2:手写一个防抖函数来处理 需求:鼠标在盒子上移动,鼠标停止500ms之后,里面的数字才会变化1 方法一:利用lodash库实现防抖 <!DOCTYPE html> <html lang&…...
postgresql用户和角色
postgresql用户和角色 简述创建角色角色属性登录特权超级用户创建数据库创建角色启动复制密码修改角色属性 对象授权撤销授权组和成员删除角色 简述 PostgreSQL 通过角色的概念来控制数据库的访问权限。角色又包含了两种概念,具有登录 权限的角色称为用户ÿ…...
设计模式之备忘录模式
文章目录 游戏角色状态恢复问题传统方案解决游戏角色恢复传统的方式的问题分析备忘录模式基本介绍游戏角色恢复状态实例备忘录模式的注意事项和细节 游戏角色状态恢复问题 游戏角色有攻击力和防御力,在大战 Boss 前保存自身的状态(攻击力和防御力),当大…...
大数据Flink(八十八):Interval Join(时间区间 Join)
文章目录 Interval Join(时间区间 Join) Interval Join(时间区间 Join) Interval Join 定义(支持 Batch\Streaming):Interval Join 在离线的概念中是没有的。Interval Join 可以让一条流去 Jo…...
数字IC笔试千题解--判断题篇(五)
前言 出笔试题汇总,是为了总结秋招可能遇到的问题,做题不是目的,在做题的过程中发现自己的漏洞,巩固基础才是目的。 所有题目结果和解释由笔者给出,答案主观性较强,若有错误欢迎评论区指出,资料…...
Kubernetes(k8s)上搭建一主两从的mysql8集群
Kubernetes上搭建一主两从的mysql8集群 环境准备搭建nfs服务器安装NFS暴露nfs目录开启nfs服务器 安装MySQL集群创建命名空间创建MySQL密码的Secret安装MySQL主节点创建pv和pvc主节点的配置文件部署mysql主节点 安装第一个MySQL Slave节点创建pv和pvc第一个从节点配置文件部署my…...
MySQL备份与恢复
MySQL备份与恢复一、备份1、数据备份的重要性2、数据备份分类2.1 物理备份2.2 逻辑备份 3、数据库备份策略4、常用的备份方法和工具5、数据库上云迁移 二、数据库完全备份1、简介2、物理冷备份与恢复2.1 物理冷备份2.2 备份恢复2.3 补充知识date 3、mysqldump备份与恢复3.1 完全…...
【RTOS学习】单片机中的C语言
🐱作者:一只大喵咪1201 🐱专栏:《RTOS学习》 🔥格言:你只管努力,剩下的交给时间! 本喵默认各位小伙伴都会C语言,我们平时学习C语言都是在Windows环境下学习的࿰…...
确知波束形成matlab仿真
阵列信号处理中的导向矢量 假设一均匀线性阵列,有N个阵元组成,满足:远场、窄带假设。 图1. 均匀线性阵模型 假设信源发射信号,来波方向为 θ \theta θ,第一个阵元接收到的信号为 x ( t ) x(t) x(t),则第…...
并发编程相关面试题
线程基础 线程和进程的区别: ----------------------------------------------------------------------- 创建线程的方式: 1 继承Thread类 2 实现runnable接口 3 实现callable 接口(有返回值的) 4 线程池创建线程 ------…...
Cpp/Qt-day050921Qt
目录 实现使用数据库的登录注册功能 头文件: registrwidget.h: widget.h: 源文件: registrwidget.c: widget.h: 效果图: 思维导图 实现使用数据库的登录注册功能 头文件: registrwidget.h: #ifndef REGISTRWIDGET_H #de…...
视频汇聚/视频云存储/视频监控管理平台EasyCVR分发rtsp流起播慢优化步骤详解
安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…...
ElementUI之登陆+注册->饿了吗完成用户登录界面搭建,axios之get请求,axios之post请求,跨域,注册界面
饿了吗完成用户注册登录界面搭建axios之get请求axios之post请求跨域 1.饿了吗完成用户注册登录界面搭建 将端口号8080改为8081 导入依赖,在项目根目录使用命令npm install element-ui -S,添加Element-UI模块 -g:将依赖下载node_glodal全局依…...
2023华为杯研究生数学建模研赛E题出血脑卒中完整论文(含28个详细预处理数据及结果表格)
大家好呀,从发布赛题一直到现在,总算完成了全国研究生数学建模竞赛(数模研赛)E题完整的成品论文。 本论文可以保证原创,保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。…...
设计模式和设计原则回顾
设计模式和设计原则回顾 23种设计模式是设计原则的完美体现,设计原则设计原则是设计模式的理论基石, 设计模式 在经典的设计模式分类中(如《设计模式:可复用面向对象软件的基础》一书中),总共有23种设计模式,分为三大类: 一、创建型模式(5种) 1. 单例模式(Sing…...
Unity3D中Gfx.WaitForPresent优化方案
前言 在Unity中,Gfx.WaitForPresent占用CPU过高通常表示主线程在等待GPU完成渲染(即CPU被阻塞),这表明存在GPU瓶颈或垂直同步/帧率设置问题。以下是系统的优化方案: 对惹,这里有一个游戏开发交流小组&…...
渲染学进阶内容——模型
最近在写模组的时候发现渲染器里面离不开模型的定义,在渲染的第二篇文章中简单的讲解了一下关于模型部分的内容,其实不管是方块还是方块实体,都离不开模型的内容 🧱 一、CubeListBuilder 功能解析 CubeListBuilder 是 Minecraft Java 版模型系统的核心构建器,用于动态创…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
【开发技术】.Net使用FFmpeg视频特定帧上绘制内容
目录 一、目的 二、解决方案 2.1 什么是FFmpeg 2.2 FFmpeg主要功能 2.3 使用Xabe.FFmpeg调用FFmpeg功能 2.4 使用 FFmpeg 的 drawbox 滤镜来绘制 ROI 三、总结 一、目的 当前市场上有很多目标检测智能识别的相关算法,当前调用一个医疗行业的AI识别算法后返回…...
基于SpringBoot在线拍卖系统的设计和实现
摘 要 随着社会的发展,社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统,主要的模块包括管理员;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...
深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
【Nginx】使用 Nginx+Lua 实现基于 IP 的访问频率限制
使用 NginxLua 实现基于 IP 的访问频率限制 在高并发场景下,限制某个 IP 的访问频率是非常重要的,可以有效防止恶意攻击或错误配置导致的服务宕机。以下是一个详细的实现方案,使用 Nginx 和 Lua 脚本结合 Redis 来实现基于 IP 的访问频率限制…...
【网络安全】开源系统getshell漏洞挖掘
审计过程: 在入口文件admin/index.php中: 用户可以通过m,c,a等参数控制加载的文件和方法,在app/system/entrance.php中存在重点代码: 当M_TYPE system并且M_MODULE include时,会设置常量PATH_OWN_FILE为PATH_APP.M_T…...
