当前位置: 首页 > news >正文

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框架的最新版本&#xff0c;它在底层进行了许多重要的改进。其中最引人注目的变化之一是它转而…...

构建工具Webpack简介

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

Docker部署单点Elasticsearch与Kibana

一 、 创建网络 因为需要部署kibana容器&#xff0c;因此需要让es和kibana容器互联。这里创建一个网络&#xff1a; docker network create es-net # 创建一个网络名称为:es-net 二 、拉取并加载镜像 方式一 docker pull elasticsearch:7.12.1 版本为elasticsearch的7…...

opencv实现仿射变换和透射变换

##1&#xff0c; 什么是仿射变换&#xff1f; 代码实现 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. 开通多个抖音账号&#xff0c;并将它们归纳为一个账号矩阵系统。 2. 建立一个统一的账号管理平台&#xff0c;以便对这些账号进行集中管理&#xff0c;包括账号信息、内容发布、社区交互等。 3. 招募专业的运营团队&#xff0c;对每个账号进行精细化运营&#xff0c;包括内…...

性能优化之防抖

方法1&#xff1a;利用lodash库提供的防抖来处理 方法2&#xff1a;手写一个防抖函数来处理 需求&#xff1a;鼠标在盒子上移动&#xff0c;鼠标停止500ms之后&#xff0c;里面的数字才会变化1 方法一&#xff1a;利用lodash库实现防抖 <!DOCTYPE html> <html lang&…...

postgresql用户和角色

postgresql用户和角色 简述创建角色角色属性登录特权超级用户创建数据库创建角色启动复制密码修改角色属性 对象授权撤销授权组和成员删除角色 简述 PostgreSQL 通过角色的概念来控制数据库的访问权限。角色又包含了两种概念&#xff0c;具有登录 权限的角色称为用户&#xff…...

设计模式之备忘录模式

文章目录 游戏角色状态恢复问题传统方案解决游戏角色恢复传统的方式的问题分析备忘录模式基本介绍游戏角色恢复状态实例备忘录模式的注意事项和细节 游戏角色状态恢复问题 游戏角色有攻击力和防御力&#xff0c;在大战 Boss 前保存自身的状态(攻击力和防御力)&#xff0c;当大…...

大数据Flink(八十八):Interval Join(时间区间 Join)

文章目录 Interval Join&#xff08;时间区间 Join&#xff09; Interval Join&#xff08;时间区间 Join&#xff09; Interval Join 定义&#xff08;支持 Batch\Streaming&#xff09;&#xff1a;Interval Join 在离线的概念中是没有的。Interval Join 可以让一条流去 Jo…...

数字IC笔试千题解--判断题篇(五)

前言 出笔试题汇总&#xff0c;是为了总结秋招可能遇到的问题&#xff0c;做题不是目的&#xff0c;在做题的过程中发现自己的漏洞&#xff0c;巩固基础才是目的。 所有题目结果和解释由笔者给出&#xff0c;答案主观性较强&#xff0c;若有错误欢迎评论区指出&#xff0c;资料…...

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语言

&#x1f431;作者&#xff1a;一只大喵咪1201 &#x1f431;专栏&#xff1a;《RTOS学习》 &#x1f525;格言&#xff1a;你只管努力&#xff0c;剩下的交给时间&#xff01; 本喵默认各位小伙伴都会C语言&#xff0c;我们平时学习C语言都是在Windows环境下学习的&#xff0…...

确知波束形成matlab仿真

阵列信号处理中的导向矢量 假设一均匀线性阵列&#xff0c;有N个阵元组成&#xff0c;满足&#xff1a;远场、窄带假设。 图1. 均匀线性阵模型 假设信源发射信号&#xff0c;来波方向为 θ \theta θ&#xff0c;第一个阵元接收到的信号为 x ( t ) x(t) x(t)&#xff0c;则第…...

并发编程相关面试题

线程基础 线程和进程的区别&#xff1a; ----------------------------------------------------------------------- 创建线程的方式&#xff1a; 1 继承Thread类 2 实现runnable接口 3 实现callable 接口&#xff08;有返回值的&#xff09; 4 线程池创建线程 ------…...

Cpp/Qt-day050921Qt

目录 实现使用数据库的登录注册功能 头文件&#xff1a; registrwidget.h: widget.h: 源文件&#xff1a; registrwidget.c: widget.h: 效果图&#xff1a; 思维导图 实现使用数据库的登录注册功能 头文件&#xff1a; registrwidget.h: #ifndef REGISTRWIDGET_H #de…...

视频汇聚/视频云存储/视频监控管理平台EasyCVR分发rtsp流起播慢优化步骤详解

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…...

ElementUI之登陆+注册->饿了吗完成用户登录界面搭建,axios之get请求,axios之post请求,跨域,注册界面

饿了吗完成用户注册登录界面搭建axios之get请求axios之post请求跨域 1.饿了吗完成用户注册登录界面搭建 将端口号8080改为8081 导入依赖&#xff0c;在项目根目录使用命令npm install element-ui -S&#xff0c;添加Element-UI模块 -g&#xff1a;将依赖下载node_glodal全局依…...

2023华为杯研究生数学建模研赛E题出血脑卒中完整论文(含28个详细预处理数据及结果表格)

大家好呀&#xff0c;从发布赛题一直到现在&#xff0c;总算完成了全国研究生数学建模竞赛&#xff08;数模研赛&#xff09;E题完整的成品论文。 本论文可以保证原创&#xff0c;保证高质量。绝不是随便引用一大堆模型和代码复制粘贴进来完全没有应用糊弄人的垃圾半成品论文。…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试

作者&#xff1a;Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位&#xff1a;中南大学地球科学与信息物理学院论文标题&#xff1a;BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接&#xff1a;https://arxiv.…...

centos 7 部署awstats 网站访问检测

一、基础环境准备&#xff08;两种安装方式都要做&#xff09; bash # 安装必要依赖 yum install -y httpd perl mod_perl perl-Time-HiRes perl-DateTime systemctl enable httpd # 设置 Apache 开机自启 systemctl start httpd # 启动 Apache二、安装 AWStats&#xff0…...

1688商品列表API与其他数据源的对接思路

将1688商品列表API与其他数据源对接时&#xff0c;需结合业务场景设计数据流转链路&#xff0c;重点关注数据格式兼容性、接口调用频率控制及数据一致性维护。以下是具体对接思路及关键技术点&#xff1a; 一、核心对接场景与目标 商品数据同步 场景&#xff1a;将1688商品信息…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

ESP32 I2S音频总线学习笔记(四): INMP441采集音频并实时播放

简介 前面两期文章我们介绍了I2S的读取和写入&#xff0c;一个是通过INMP441麦克风模块采集音频&#xff0c;一个是通过PCM5102A模块播放音频&#xff0c;那如果我们将两者结合起来&#xff0c;将麦克风采集到的音频通过PCM5102A播放&#xff0c;是不是就可以做一个扩音器了呢…...

Cinnamon修改面板小工具图标

Cinnamon开始菜单-CSDN博客 设置模块都是做好的&#xff0c;比GNOME简单得多&#xff01; 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...

鱼香ros docker配置镜像报错:https://registry-1.docker.io/v2/

使用鱼香ros一件安装docker时的https://registry-1.docker.io/v2/问题 一键安装指令 wget http://fishros.com/install -O fishros && . fishros出现问题&#xff1a;docker pull 失败 网络不同&#xff0c;需要使用镜像源 按照如下步骤操作 sudo vi /etc/docker/dae…...

在Ubuntu24上采用Wine打开SourceInsight

1. 安装wine sudo apt install wine 2. 安装32位库支持,SourceInsight是32位程序 sudo dpkg --add-architecture i386 sudo apt update sudo apt install wine32:i386 3. 验证安装 wine --version 4. 安装必要的字体和库(解决显示问题) sudo apt install fonts-wqy…...

VM虚拟机网络配置(ubuntu24桥接模式):配置静态IP

编辑-虚拟网络编辑器-更改设置 选择桥接模式&#xff0c;然后找到相应的网卡&#xff08;可以查看自己本机的网络连接&#xff09; windows连接的网络点击查看属性 编辑虚拟机设置更改网络配置&#xff0c;选择刚才配置的桥接模式 静态ip设置&#xff1a; 我用的ubuntu24桌…...