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();
}

思维导图:

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

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

相关文章

算法通过村第九关-二分(中序遍历)黄金笔记|手撕二分

文章目录 前言1. 基本查找2. 二分查找与分治2.1 循环的方式2.2 递归的方式 3. 元素中的重复的二分查找总结 前言 提示&#xff1a;有些人&#xff0c;远看是灯塔&#xff0c;靠近是悬崖。 --任明信《别人》 二分查找是非常重要的算法之一&#xff0c;不仅要掌握&#xff0c;更要…

halcon算子2、gray_histo

gray_histo 计算直方图 原形&#xff1a;gray_histo(Regions, Image : : : AbsoluteHisto, RelativeHisto) 功能&#xff1a;计算直方图 参数&#xff1a;Regions&#xff1a;区域&#xff0c;要计算的区域&#xff08;在image上的区域&#xff09; Image &#xff1a;要计算的…

Postman应用——Variable变量设置(Global、Environment和Collection)

文章目录 Global变量设置Environment变量设置Collection变量设置Global、Environment环境变量预览 Global、Environment和Collection变量使用&#xff0c;点击查看。 Global变量设置 全局变量设置&#xff0c;作用域是所有Collection、Folder和Request&#xff0c;全局变量只有…

Docker网络问题:容器无法访问外部网络

Docker网络问题&#xff1a;容器无法访问外部网络 &#x1f61f; Docker网络问题&#xff1a;容器无法访问外部网络 &#x1f61f;摘要 &#x1f914;引言 &#x1f310;正文 &#x1f913;为什么容器无法访问外部网络&#xff1f; &#x1f615;1. 网络配置错误2. 防火墙设置3…

【智能电表数据接入物联网平台实践】

智能电表数据接入物联网平台实践 设备接线准备设备调试代码实现Modbus TCP Client 读取电表数据读取寄存器数据转成32bit Float格式然后使用modbusTCP Client 读取数据 使用mqtt协议接入物联网平台最终代码实现 设备接线准备 设备调试 代码实现 Modbus TCP Client 读取电表数…

pymysql执行非查询语句会自动提交事务,关闭事务自动提交

一、前置条件 在mysql数据库生成数据&#xff1a; CREATE DATABASE mydatabase;CREATE TABLE Course (CourseID INT PRIMARY KEY,CourseName VARCHAR(100),Instructor VARCHAR(100),Credits INT,StudentID INT,FOREIGN KEY (StudentID) REFERENCES StudentInformation(Studen…

win10 Baichuan2-7B-Chat-4bits 上部署 百川2-7B-对话模型-4bits量化版

搞了两天才搞清楚跑通 好难呢,个人电脑 win10 ,6GB显存 个人感觉 生成速度很慢,数学能力不怎么行 没有ChatGLM2-6B 强,逻辑还行, 要求: 我的部署流程 1.下载模型 ,下载所有文件 然后 放到新建的model目录 https://huggingface.co/baichuan-inc/Baichuan2-7B-Chat-4bits/tr…

HarmonyOS之 组件的使用

一 容器 1.1 容器分类 Column表示沿垂直方向布局的容器。Row表示沿水平方向布局的容器。 1.2 主轴和交叉轴 主轴&#xff1a;在Column容器中的子组件是按照从上到下的垂直方向布局的&#xff0c;其主轴的方向是垂直方向&#xff1b;在Row容器中的组件是按照从左到右的水平方向…

怒刷LeetCode的第11天(Java版)

目录 第一题 题目来源 题目内容 解决方法 方法一&#xff1a;迭代 方法二&#xff1a;递归 方法三&#xff1a;指针转向 第二题 题目来源 题目内容 解决方法 方法一&#xff1a;快慢指针 方法二&#xff1a;Arrays类的sort方法 方法三&#xff1a;计数器 方法四…

如何借助上线初期运维管理守住项目建设最后一公里

随着运营商技术升级、业务发展&#xff0c;以及服务能力要求提升&#xff0c;当下新建项目的交付或系统大版本升级大多数都需要历经千辛万苦才达到上线的彼岸。然而&#xff0c;项目上线并不意味着项目结束&#xff0c;“上线”也并不意味着终点&#xff0c;而是一个新的管理模…

Redis学习笔记--001

Redis快速入门 文章目录 Redis快速入门一、初识Redis1.1、NoSQL数据库1.2、Redis介绍1.3、[Redis](https://redis.io/)的安装 二、Redis常见命令2.1、Redis默认启动2.2、指定配置启动2.3、Redis开机自启设置 三、Redis客户端3.1、Redis命令行客户端3.2、图形化桌面客户端 四、r…

软件项目开发的流程及关键点

软件项目开发的流程及关键点 graph LR A[需求分析] --> B[系统设计] B --> C[编码开发] C --> D[测试验证] D --> E[部署上线] E --> F[运维支持]在项目开发的流程中&#xff0c;首先是进行需求分析&#xff0c;明确项目的目标和功能要求。接下来是系统设计&am…

【Vue.js】vue-cli搭建SPA项目并实现路由与嵌套路由---详细讲解

一&#xff0c;何为SPA SPA&#xff08;Single Page Application&#xff09;是一种 Web 应用程序的开发模式&#xff0c;它通过使用 AJAX 技术从服务器异步加载数据&#xff0c;动态地更新页面内容&#xff0c;实现在同一个页面内切换不同的视图&#xff0c;而无需整页刷新 1.…

优维低代码实践:图片和搜索

优维低代码技术专栏&#xff0c;是一个全新的、技术为主的专栏&#xff0c;由优维技术委员会成员执笔&#xff0c;基于优维7年低代码技术研发及运维成果&#xff0c;主要介绍低代码相关的技术原理及架构逻辑&#xff0c;目的是给广大运维人提供一个技术交流与学习的平台。 优维…

爬虫 — App 爬虫(一)

目录 一、介绍二、APP 爬虫常见反爬三、APP 抓包常用工具四、模拟器五、安装 APP1、下载 APP2、安装 APP 六、fiddler1、工作原理2、安装3、基本介绍 七、环境配置1、fiddler 的配置2、夜神模拟器的配置 八、案例 一、介绍 爬虫分类——数据来源 1、PC 端爬虫&#xff08;网页…

Multisim14.0仿真(二十)74LS161 4位同步二进制加法计数器

一、仿真原理图&#xff1a; 二、仿真效果图&#xff1a;

云计算的未来:云原生架构和自动化运维的崭露头角

文章目录 云计算的演进云原生架构1. 容器化2. 微服务3. 自动化部署和扩展4. 故障恢复 自动化运维1. 基础设施即代码&#xff08;IaC&#xff09;2. 运维自动化示例&#xff1a;使用Ansible自动化配置管理 3. 自动化监控和报警 未来展望1. 更多的自动化2. 多云混合云3. 边缘计算…

《DevOps实践指南》- 读书笔记(九)

DevOps实践指南 25. 附录附录 1 DevOps 的大融合精益运动敏捷运动Velocity 大会运动敏捷基础设施运动持续交付运动丰田套路运动精益创业运动精益用户体验运动Rugged Computing 运动 附录 2 约束理论和核心的长期冲突附录 3 恶性循环列表附录 4 交接和队列的危害附录 5 工业安全…

如何向PDB文件添加双键

在用PDB文件进行分子绘图的时候&#xff08;制作OBJ&#xff09;&#xff0c;发现像Atomic blender插件和PDB本身并不支持双键&#xff0c;需要对PDB文件进行修改&#xff0c;参照的该yt链接https://www.youtube.com/watch?vYNoow7qkwFA&t364s&ab_channelEdvinFako 即…

由于找不到d3dx9_43.dll,无法继续执行代码要怎么解决

D3DX9_43.dll是一个动态链接库文件&#xff0c;它是DirectX的一个组件&#xff0c;主要用于支持一些旧版本的游戏和软件。当电脑缺少这个文件时&#xff0c;可能会导致这些游戏和软件无法正常运行。例如&#xff0c;一些老游戏可能需要D3DX9_43.dll来支持图形渲染等功能。此外&…