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

9.25day5---Qt

登录页面设计,建立用户注册以及登录的数据库,数据库保存用户名和密码

(ps:本篇只完成了登录功能,其他功能,请见下篇嘿嘿。)

 

 再次注册则失败:

 

 

代码如下: 

头文件:

登录后聊天室界面(头文件):

#ifndef LT_JM_H
#define LT_JM_H#include <QWidget>namespace Ui {
class lt_jm;
}class lt_jm : public QWidget
{Q_OBJECTpublic slots:void jump_slot();         //接收跳转信号的槽函数public:explicit lt_jm(QWidget *parent = nullptr);~lt_jm();private:Ui::lt_jm *ui;
};#endif // LT_JM_H

 注册头文件:

#ifndef ZC_JM_H
#define ZC_JM_H#include <QWidget>
#include <QMessageBox>
#include <QSqlQuery>namespace Ui {
class zc_jm;
}class zc_jm : public QWidget
{Q_OBJECTpublic:explicit zc_jm(QWidget *parent = nullptr);~zc_jm();public slots:void jump_slot();         //接收跳转信号的槽函数private slots:void on_pushButton_clicked();private:Ui::zc_jm *ui;
};#endif // ZC_JM_H

 ui界面头文件:

#ifndef WIDGET_H
#define WIDGET_H#include "zc_jm.h"
#include "lt_jm.h"
#include <QWidget>
#include<QSqlDatabase>          //数据库管理类
#include<QSqlQuery>              //执行sql语句的类
#include<QSqlRecord>              //数据库记录的类
#include<QMessageBox>            //消息对话框QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();signals:void jump();           //自定义跳转信号函数void jump1();private slots:void on_dl_clicked();void on_zc_clicked();void on_tc_clicked();private:Ui::Widget *ui;lt_jm *jm2;             //定义另一个界面的指针zc_jm *jm3;             //定义另一个界面的指针QSqlDatabase db;            //定义一个数据库的类对象
};
#endif // WIDGET_H

功能文件:

聊天室功能函数:

#include "lt_jm.h"
#include "ui_lt_jm.h"lt_jm::lt_jm(QWidget *parent) :QWidget(parent),ui(new Ui::lt_jm)
{ui->setupUi(this);
}lt_jm::~lt_jm()
{delete ui;
}void lt_jm::jump_slot()
{this->show();            //将自己界面进行展示
}

注册功能函数:

#include "zc_jm.h"
#include "ui_zc_jm.h"zc_jm::zc_jm(QWidget *parent) :QWidget(parent),ui(new Ui::zc_jm)
{ui->setupUi(this);this->setFixedSize(500,450);     //设置固定尺寸}zc_jm::~zc_jm()
{delete ui;
}void zc_jm::jump_slot()
{this->show();            //将自己界面进行展示
}void zc_jm::on_pushButton_clicked()
{//获取ui界面中要录入的数据QString id = ui->lineEdit->text();QString pwd = ui->lineEdit_2->text();//要确保每个编辑器中都有数据if(id.isEmpty() || pwd.isEmpty()){QMessageBox::information(this,"提示","请将信息填写完整");return;}//准备sql语句QString sql = QString("insert into user_pwd(ID,password) ""values('%1','%2')").arg(id).arg(pwd);//准备语句执行者QSqlQuery querry;if(!querry.exec(sql)){QMessageBox::information(this,"失败", "添加失败");return;}else{QMessageBox::information(this,"成功", "添加成功");}
}

 ui界面功能函数:

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);this->setFixedSize(500,450);     //设置固定尺寸this->setWindowTitle("My QQ");               //设置窗口标题this->setWindowIcon(QIcon(":/tupian/OIP-C (1).jpg"));//设置窗口图标this->setStyleSheet("background-color:skyblue;");              //设置样式表this->setWindowOpacity(1); //设置窗口透明度ui->dl->setIcon(QIcon(":/tupian/1.jpg"));//设置按钮图标ui->zc->setIcon(QIcon(":/tupian/OIP-C (6).jpg"));ui->tc->setIcon(QIcon(":/tupian/OIP-C (5).jpg"));ui->dl->setStyleSheet("background-color:white; border-radius:10px;");      //设置样式表ui->zc->setStyleSheet("background-color:white; border-radius:10px;");      //设置样式表ui->tc->setStyleSheet("background-color:white; border-radius:10px;");      //设置样式表ui->pwd->setEchoMode(QLineEdit::Password);        //设置回显模式ui->logo->setPixmap(QPixmap(":/tupian/OIP-C (4).jpg"));       //设置图片ui->logo->setScaledContents(true);                      //设置内容自适应ui->yhm_t->setPixmap(QPixmap(":/tupian/OIP-C.jpg"));ui->yhm_t->setScaledContents(true);ui->pwd_t->setPixmap(QPixmap(":/tupian/OIP-C (2).jpg"));ui->pwd_t->setScaledContents(true);if(!db.contains("mydatabase.db")){db = QSqlDatabase::addDatabase("QSQLITE");//添加一个数据库,调用该类中的静态成员函数addDatabasedb.setDatabaseName("mydatabase.db");//设置数据库的名字}if(!db.open())    //打开数据库{QMessageBox::information(this,"失败","数据库打开失败");return;}QString sql = "create table if not exists user_pwd("           //创建表"ID varchar(16) primary key,"                   //账号,主键"password varchar(16))";                       //密码QSqlQuery querry;                                  //准备语句执行者if(!querry.exec(sql))    //让语句执行者执行sql语句{QMessageBox::information(this, "失败", "创建表失败");return;}jm2 = new lt_jm;            //给另一个界面实例化空间connect(this,&Widget::jump,jm2,&lt_jm::jump_slot);//将当前界面的信号,与s1界面的槽函数进行连接jm3 = new zc_jm;            //给另一个界面实例化空间connect(this,&Widget::jump1,jm3,&zc_jm::jump_slot);//将当前界面的信号,与s1界面的槽函数进行连接
}Widget::~Widget()
{delete ui;
}void Widget::on_dl_clicked()
{QString sql = "select * from stu_info";QSqlQuery querry;if(!querry.exec(sql))//执行sql语句{QMessageBox::information(this,"提示","显示失败");return;}int i = 0;               //记录行数while(querry.next()){//在该循环中,querry对象表示的是当前的记录//可以使用成员函数: QSqlRecord record() const;获取当前记录//可以使用QSqlRecord成员函数,count():获取当前记录中的项数//可以使用QSqlRecord成员函数,value(index):获取当前记录中第index项的值//遍历每条记录中的每一项的内容for(int j=0; j<querry.record().count(); j++){//ui->tableWidget->setItem(i,j, new QTableWidgetItem(querry.record().value(j).toString()));}i++;         //继续遍历下一条记录}emit jump();this->hide();        //将当前界面隐藏
}void Widget::on_zc_clicked()
{emit jump1();this->hide();        //将当前界面隐藏}void Widget::on_tc_clicked()
{}

 

测试文件:

#include "widget.h"#include <QApplication>int main(int argc, char *argv[])
{QApplication a(argc, argv);Widget w;w.show();return a.exec();
}

相关文章:

9.25day5---Qt

登录页面设计&#xff0c;建立用户注册以及登录的数据库&#xff0c;数据库保存用户名和密码 &#xff08;ps:本篇只完成了登录功能&#xff0c;其他功能&#xff0c;请见下篇嘿嘿。&#xff09; 再次注册则失败&#xff1a; 代码如下&#xff1a; 头文件&#xff1a; 登录…...

wpf制作自定义控件,并触发外部路由事件

目的是在前端增加一个自定义控件里的button后&#xff0c;按下动作可以调用使用该控件的页面的事件 首先在前端增加自定义控件里加入一个button&#xff0c;在其cs页面里注册点击事件 var btnAdd GetTemplateChild("btnAdd") as FlatButton;if (btnAdd ! null){btn…...

axios全局路由拦截的设置方法

一个项目中如果http请求发生了错误/异常&#xff0c;比如返回码4xx&#xff08;表示没有授权&#xff0c;登录过期等&#xff09;&#xff0c;我们希望能够在axios在第一时间就能拦截获取到&#xff0c;然后直接提示报错的错误信息&#xff0c;而不是在发起请求的地方&#xff…...

XSS跨站脚本攻击

XSS全称&#xff08;Cross Site Scripting&#xff09;跨站脚本攻击,XSS属于客户端攻击&#xff0c;受害者最终是用户&#xff0c;在网页中嵌入客户端恶意脚本代码&#xff0c;最常用javascript语言。&#xff08;注意&#xff1a;叠成样式表CSS已经被占用所以叫XSS&#xff09…...

Java8实战-总结33

Java8实战-总结33 重构、测试和调试使用 Lambda 重构面向对象的设计模式策略模式模板方法 重构、测试和调试 使用 Lambda 重构面向对象的设计模式 新的语言特性常常让现存的编程模式或设计黯然失色。比如&#xff0c; Java 5中引入了for-each循环&#xff0c;由于它的稳健性和…...

Postman 的使用教程(详细)

Postman 使用教程 1. 是什么 Postman 是一个接口测试工具软件&#xff0c;可以帮助开发人员管理测试接口。 官网&#xff1a;https://www.getpostman.com/ 2. 安装 建议通过官网下载安装&#xff0c;不要去那些乱七八糟的下载平台&#xff0c;或者留言获取 官网下载地址&am…...

单元测试 —— JUnit 5 参数化测试

JUnit 5参数化测试 目录 设置我们的第一个参数化测试参数来源 ValueSourceNullSource & EmptySourceMethodSourceCsvSourceCsvFileSourceEnumSourceArgumentsSource参数转换参数聚合奖励总结 如果您正在阅读这篇文章&#xff0c;说明您已经熟悉了JUnit。让我为您概括一下…...

uview组件库的安装

更多的请查看官方文档uView 2.0 - 全面兼容 nvue 的 uni-app 生态框架 - uni-app UI 框架 (uviewui.com) // 如果您的根目录没有package.json文件的话&#xff0c;请先执行如下命令&#xff1a; // npm init -y 安装 npm install uview-ui2.0.36 // 更新 // npm update uvie…...

skywalking入门

参考&#xff1a; https://www.jianshu.com/p/ffa7ddcda4ab 参考&#xff1a; https://developer.aliyun.com/article/1201085 skywalking&#xff08;APM&#xff09; 调用链路分析以及应用监控分析工具 Skywalking主要由三大部分组成&#xff1a;agent、collector、webapp-…...

【Java 基础篇】Java多线程实现文件上传详解

文件上传是Web应用程序中常见的功能之一&#xff0c;用户可以通过网页将文件从本地计算机上传到服务器。在处理大文件或多用户并发上传的情况下&#xff0c;为了提高性能和用户体验&#xff0c;常常使用多线程来实现文件上传功能。本文将详细介绍如何使用Java多线程实现文件上传…...

【计算机基础】VS断点调试,边学边思考

&#x1f4e2;&#xff1a;如果你也对机器人、人工智能感兴趣&#xff0c;看来我们志同道合✨ &#x1f4e2;&#xff1a;不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】 &#x1f4e2;&#xff1a;文章若有幸对你有帮助&#xff0c;可点赞 &#x1f44d;…...

BD就业复习第五天

1. 核心组件的优化&#xff1a;hive、spark、flink 针对Hive、Spark和Flink这三个核心组件&#xff0c;以下是它们的优化和一些常见面试题以及详细的回答&#xff1a; 1. Hive 优化 面试问题1&#xff1a;什么是Hive&#xff1f;为什么需要对Hive进行优化&#xff1f; 回答…...

ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1+, currently the ‘ssl‘

报错&#xff1a; ImportError: urllib3 v2.0 only supports OpenSSL 1.1.1, currently the ‘ssl’ module is compiled with OpenSSL 1.1.0h 27 Mar 2018.解决办法&#xff1a;将urllib3的版本降低 pip install urllib31.26.15参考 python包报错ImportError: urllib3 v2.…...

Qt5开发及实例V2.0-第十二章-Qt多线程

Qt5开发及实例V2.0-第十二章-Qt多线程 第12章 Qt 5多线程12.1 多线程及简单实例12.2 多线程控制12.2.1 互斥量12.2.2 信号量12.2.3 线程等待与唤醒 12.3 多线程应用12.3.1 【实例】&#xff1a;服务器编程12.3.2 【实例】&#xff1a;客户端编程 本章相关例程源码下载1.Qt5开发…...

Windows 修改系统默认字体

Windows Registry Editor Version 5.00; 重装机后电脑屏幕及字体调整.reg.lnk ;; 显示器分辨率: 3840*2160 ;; 自定义缩放: 266 ;; 辅助功能 - 文本大小 - 110% ;; 最后 ClearType 文本调谐器; https://www.cnblogs.com/bolang100/p/8548040.html#WINDOWS 10 显示中的仅更改文…...

图像处理软件Photoshop 2024 mac新增功能

Photoshop 2024 mac是一款图像处理软件的最新版本。ps2024提供了丰富的功能和工具&#xff0c;使用户能够对照片、插图、图形等进行精确的编辑和设计。 Photoshop 2024 mac软件特点 快速性能&#xff1a;Photoshop 2024 提供了更快的渲染速度和更高效的处理能力&#xff0c;让用…...

JavaScript之观察者模式

本文作者为 360 奇舞团前端开发工程师 概述 在日常开发中&#xff0c;开发人员经常使用设计模式来解决软件设计中的问题。其中&#xff0c;观察者模式是一种常用的模式&#xff0c;它可以帮助开发人员更好地处理对象之间的通信。在 JavaScript 中&#xff0c;观察者模式的应用非…...

深入了解ln命令:创建硬链接和符号链接的实用指南

文章目录 1. 引言1.1 关于ln命令1.2 ln命令的作用和用途 2. 基本用法2.1 创建硬链接2.2 创建符号链接2.3 区别硬链接和符号链接 3. 操作示例3.1 创建硬链接的示例3.2 创建符号链接的示例3.3 查看链接信息 4. 注意事项和常见问题4.1 文件路径4.2 软链接的相对路径4.3 软链接的更…...

虚拟IP技术

1.说明 虚拟IP&#xff08;Virtual IP Address&#xff0c;简称VIP&#xff09;是一个未分配给真实弹性云服务器网卡的IP地址。 弹性云服务器除了拥有私有IP地址外&#xff0c;还可以拥有虚拟IP地址&#xff0c;用户可以通过其中任意一个IP&#xff08;私有IP/虚拟IP&#xf…...

蓝桥杯 题库 简单 每日十题 day5

01 字符计数 字符计数 题目描述 给定一个单词&#xff0c;请计算这个单词中有多少个元音字母&#xff0c;多少个辅音字母。 元音字母包括a,e&#xff0c;i,o&#xff0c;u&#xff0c;共五个&#xff0c;其他均为辅音字母。 输入描述 输入格式&#xff1a; 输入一行&#xff0…...

【计算机网络】图解路由器(一)

图解路由器&#xff08;一&#xff09; 1、什么是路由器&#xff1f;2、什么是路由选择&#xff1f;3、什么是转发&#xff1f;4、路由器设备有哪些类型&#xff1f;5、根据性能分类&#xff0c;路由器有哪些类型&#xff1f;5.1 高端路由器5.2 中端路由器5.3 低端路由器 6、什…...

C语言文件的相关操作

C语言中文件的相关操作 文件的打开 使用文件的打开函数需要引入这个头文件&#xff1a;#include <fcntl.h> open函数 int open(char const *pathname, int flags, mode_t mode) 功能&#xff1a;打开已有的文件或者创建新文件参数 pathname&#xff1a;文件路径名&…...

Java入门级简单定时任务TimerTask

如果要执行一些简单的定时器任务&#xff0c;无须做复杂的控制&#xff0c;也无须保存状态&#xff0c;那么可以考虑使用JDK 入门级的定期器Timer来执行重复任务。 一、原理 JDK中&#xff0c;定时器任务的执行需要两个基本的类&#xff1a; java.util.Timer; java…...

Linux命令行教程:使用head和tail命令快速查看文件的开头和结尾

文章目录 简介A. 什么是head和tail命令B. head和tail命令的作用和用途 head命令A. 命令格式和语法B. 常见选项和参数1. -n&#xff1a;指定显示的行数2. -c&#xff1a;指定显示的字节数3. -v&#xff1a;显示文件名 C. 示例和应用实例1. 显示文件的前几行2. 显示多个文件的前几…...

[CISCN 2019 初赛]Love Math 通过进制转换执行命令

目录 hex2bin bin2hex base_convert 动态函数 第一种解法 通过get获取参数 绕过 第二种解法 读取请求头 getallheaders echo a,b 第三种解法 异或获得更多字符 这道题也是很有意思&#xff01; 通过规定白名单和黑名单 指定了 函数为数学函数 并且参数也只能是规…...

【Linux】系统编程生产者消费者模型(C++)

目录 【1】生产消费模型 【1.1】为何要使用生产者消费者模型 【1.2】生产者消费者模型优点 【2】基于阻塞队列的生产消费者模型 【2.1】生产消费模型打印模型 【2.2】生产消费模型计算公式模型 【2.3】生产消费模型计算公式加保存任务模型 【2.3】生产消费模型多生产多…...

【数据结构】图的应用:最小生成树;最短路径;有向无环图描述表达式;拓扑排序;逆拓扑排序;关键路径

目录 1、最小生成树 1.1 概念 1.2 普利姆算法&#xff08;Prim&#xff09; 1.3 克鲁斯卡尔算法&#xff08;Kruskal&#xff09; 2、最短路径 2.1 迪杰斯特拉算法&#xff08;Dijkstra&#xff09; 2.2 弗洛伊德算法&#xff08;Floyd&#xff09; 2.3 BFS算法&…...

大数据驱动业务增长:数据分析和洞察力的新纪元

文章目录 大数据的崛起大数据的特点大数据技术 大数据驱动业务增长1. 洞察力和决策支持2. 个性化营销3. 风险管理4. 产品创新 大数据分析的新纪元1. 云计算和大数据示例代码&#xff1a;使用AWS的Elastic MapReduce&#xff08;EMR&#xff09;进行大数据分析。 2. 人工智能和机…...

科技云报道:分布式存储红海中,看天翼云HBlock如何突围?

科技云报道原创。 过去十年&#xff0c;随着技术的颠覆性创新和新应用场景的大量涌现&#xff0c;企业IT架构出现了稳态和敏态的混合化趋势。 在持续产生海量数据的同时&#xff0c;这些新应用、新场景在基础设施层也普遍基于敏态的分布式架构构建&#xff0c;从而对存储技术…...

Java高级-动态代理

动态代理 1.介绍2.案例 1.介绍 public interface Star {String sing(String name);void dance(); }public class BigStar implements Star{private String name;public BigStar(String name) {this.name name;}public String sing(String name) {System.out.println(this.name…...

常见的网站建设技术/搜索引擎营销案例分析

mkdir命令是常用的命令&#xff0c;用来建立空目录&#xff0c;它还有2个常用参数&#xff1a;-m, --mode模式 设定权限 (类似 chmod)-p, --parents 需要时创建上层目录&#xff0c;如目录早已存在则不当作错误cd切换目录./ABC.sh执行.sh文件(UNIX/LINUX 操作系统的脚本文件)cm…...

jsp动态网站开发技术毕业论文/aso投放平台

以下为例&#xff1a; <VirtualHost *:80> #站点目录 DocumentRoot "E:/project/code/public/www" #访问域名 ServerName www.cankaoxiaoxi.com #给虚拟主机增加多个域名&#xff0c;上面网址的别名 ServerAlias cankaoxiaoxi.com #添加可以执行php的文…...

受欢迎的网站建设公司/产品线上推广渠道

介绍 enable_shared_from_this类位于标准库的中&#xff0c;当一个类T公有继承它&#xff0c;如 class T : public enable_shared_from_this<T> { }; 类T会继承到一个公有方法 shared_ptr<T> shared_from_this(); 要在T类中使用该函数&#xff0c;是继承enable_sh…...

江苏网站备案流程图/百度一下官方网页版

2019独角兽企业重金招聘Python工程师标准>>> 在使用 git 管理项目的时候&#xff0c; 本来想完全使用 git gui 图形界面的&#xff0c;结果发现 git gui 只能使用一些基本功能。。。其他的一些功能还是需要使用 git bash 敲命令的&#xff0c;&#xff0c;这个和SVN…...

高端网站建设公司哪个靠谱/域名解析查询

活动日程表&#xff1a; 转载于:https://www.cnblogs.com/CuteRabbit/archive/2007/10/13/2192526.html...

怎样推广自己做的网站/链接怎么做

1.显示语法规范 show ( [ speed, [easing], [fn]]) hide ( [ speed, [easing], [fn]]) toggle ( [ speed, [easing], [fn]]) 显示参数 (1)参数都可以省略&#xff0c;无动画直接显示。 (2) speed:三种预定速度之一 的字符串( "slow" &#xff0c;"normal" …...