qt day 6

登录界面

#include "window.h"
#include<QDebug>
#include<QIcon>
Window::Window(QWidget *parent) //构造函数的定义: QWidget(parent)           //显性调用父类的构造函数
{//判断数据库对象是否包含了自己使用的数据库Student.dbif(!db.contains("Student.db")){//添加一个数据库db = QSqlDatabase::addDatabase("QSQLITE");  // 表明使用的是sqlite3版本的数据库//给数据库命名db.setDatabaseName("St.db");}//打开数据库if(!db.open()){QMessageBox::information(this,"提示","数据库打开失败");}//此时说明数据库已经创建并打开了,然后创建数据表//创建数据表要用sql语句,用QSQLQuerry类对象来完成//准备sql语句QString sql = "create table if not exists my("             //创建表的sql语句"name integer primary key,"           //id主键, 允许自增"pass integer)";        //性别  字符串//定义语句执行者QSqlQuery querry;if(!querry.exec(sql)){QMessageBox::information(this,"失败","创建失败");return ;}//this->resize(430,330);this->resize(QSize(800,600));//  this->setMaximumSize(430,330);//  this->setMinimumSize(430,330);this->setFixedSize(430,330);// 设置尺寸最值//窗口标题this->setWindowTitle("WeChat");//窗口iconthis->setWindowIcon(QIcon(":/icon/111.png"));//设置背景色this->setStyleSheet("background-color:skyblue;");//设置窗口透明度this->setWindowOpacity(1);//无参构造bt1 =new QPushButton;//给组件指定父组件,让其依附于界面bt1->setParent(this);//设置组件文本内容bt1->setText("开始");this->setFixedSize(430,330);//设置按钮组件的大小bt1->resize(QSize(50,30));//移动组件位置bt1->move(200,290);//设置样式表bt1->setStyleSheet("background-color:red");bt1->setIcon(QIcon("E:\\c\\qt1\\111.png"));//2.构造一个按钮bt2 = new QPushButton(this);bt2->setText("取消");bt2->resize(bt1->size());bt2->move(300,290);// bt2->setStyleSheet("background-color:blue");// bt2->setEnabled(false);bt2->setIcon(QIcon("E:\\c\\qt1\\111.png"));//3.创建图标bt3 =new QLabel(this);bt3->resize(bt1->size());bt3->move(100,170);bt3->setPixmap(QString("E:\\c\\qt1\\111.png"));//设置 内容自适应bt3->setScaledContents(true);//2.构造一个按钮bt6 = new QPushButton(this);bt6->setText("注册");bt6->resize(bt1->size());bt6->move(100,290);bt6->setStyleSheet("background-color:yellow");bt6->setIcon(QIcon("E:\\c\\qt1\\111.png"));connect(this->bt6,&QPushButton::clicked,this,&Window::bt6_clicked);//4.创建图标bt4 =new QLabel(this);bt4->resize(bt1->size());bt4->move(100,220);bt4->setPixmap(QString("E:\\c\\qt1\\222.png"));//设置 内容自适应bt4->setScaledContents(true);/***********************************/ed1 =new QLineEdit(this);//ed1->setText(""); //设置编辑器中的文本//设置占位文本ed1->setPlaceholderText("密码:");//设置尺寸ed1->resize(180,30);//移动位置ed1->move(bt4->x()+60,bt4->y());ed1->setPlaceholderText("密码:");ed1->setEchoMode(QLineEdit::Password);//2.构造一个行编辑器,构造时给定父,以及文本内容ed2 = new QLineEdit(this);ed2->resize(180,30);ed2->move(bt3->x()+60,bt3->y());ed2->setPlaceholderText("账号 /手机 /邮箱...");/***********************************/la1 =new QLabel(this);la1 ->resize(430,140);la1->setPixmap(QString("E:\\c\\qt1\\222.png"));//设置 内容自适应la1->setScaledContents(true);connect(this->bt1,&QPushButton::clicked,this,&Window::bt1_clicked);//connect(this,&Window::my_signal,[&](){this->close();});//使用qt4连接,connect(bt2,SIGNAL(clicked()),this,SLOT(close()));}
Window::~Window()
{}
//补充的注册
void Window::bt6_clicked()
{int name_1 = this->ed2->text().toInt();QString pass_1 = this->ed1->text();if(name_1 == 0 ||pass_1.isEmpty()){QMessageBox::information(this,"提示","请将数据填写正确");return ;}QSqlQuery querry;//准备sql语句QString sql2 = QString("select * from my where name = '%1'").arg(name_1);if(!querry.exec(sql2)){QMessageBox::information(this,"提示","注册失败");return ;}else{QString sql = QString("insert into my(name,pass)""values('%1', '%2')").arg(name_1).arg(pass_1);if(!querry.exec(sql)){QMessageBox::information(this,"提示","注册失败");return ;}QMessageBox::information(this,"提示","注册成功");}}void Window::bt1_clicked()
{QMessageBox box(QMessageBox::Critical,"错误","密码错误",QMessageBox::Yes|QMessageBox::No,this);QMessageBox box2(QMessageBox::Critical,"错误","账号错误",QMessageBox::Yes|QMessageBox::No,this);QMessageBox box3(QMessageBox::Information,"信息","登录成功",QMessageBox::Ok|QMessageBox::Cancel,this);int name_1 = this->ed2->text().toInt();QString pass_1 = this->ed1->text();if(name_1 == 0 ||pass_1.isEmpty()){QMessageBox::information(this,"提示","请将数据填写正确");return ;}QSqlQuery querry;QString sql = QString("select * from my where name = '%1' and pass = '%2'").arg(name_1).arg(pass_1);if(querry.exec(sql)){if(querry.next()){qDebug()<<"登录成功";int rew =box3.exec();if(rew ==QMessageBox::Ok){emit jump();emit my_signal();}else {int ret =QMessageBox::question(this,"问题","是否取消登录",QMessageBox::Yes|QMessageBox::No,QMessageBox::Yes);if(ret ==QMessageBox::Yes){emit my_signal();}}}else{int ret =box.exec();if(ret ==QMessageBox::Yes){Window::ed1->setText("");}elsethis->close();}}else{qDebug()<<"账号错误";int rex =box2.exec();if(rex ==QMessageBox::Yes){Window::ed1->setText("");Window::ed2->setText("");}elsethis->close();}
}

 查找:

void Widget::on_serchBtn_clicked()
{int numb_ui = ui->numbEdit->text().toInt();//准备sql语句QString sql = QString("select * from myTable where numb = '%1'").arg(numb_ui);//准备语句执行者QSqlQuery querry;//执行sql语句if(!querry.exec(sql)){QMessageBox::information(this,"失败","查询失败");return ;}int i = 0;while (querry.next()) {int k =1;// 将查询结果插入到QTableWidget中for (int j = 4; j < 8; j++) {ui->tableWidget->setItem(i,j-4,new QTableWidgetItem(querry.record().value(k).toString()));k++;}i++;}
}

 

网络聊天室,客户端

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);ui->disconbtn->setEnabled(false);//给客户端指针实例化空间socket = new QTcpSocket(this);//如果连接服务器成功,该客户端就会发射一个connected的信号//我们可以将该信号连接到自定义的槽函数中处理相关逻辑//由于该连接只需要连接一次,所以写在构造函数connect(socket,&QTcpSocket::connected,this,&Widget::connected_slot);//客户端与服务器连接成功后,如果服务器向客户端发来数据,那么该客户端就会自动发射一个readyRead信号//我们可以将该信号连接到自定义的槽函数中处理相关逻辑connect(socket,&QTcpSocket::readyRead,this,&Widget::readyRead_slot);//当客户端与服务器断开连接后,该客户端就会自动发射一个disconnected的信号//我们可以将该信号与自定义的槽函数连接//由于只要连接一次,所以写在构造函数connect(socket,&QTcpSocket::disconnected,this,&Widget::disconnected_slot);}Widget::~Widget()
{delete ui;
}void Widget::on_conbtn_clicked()
{//获取ui界面的信息userName = ui->usernameLab->text();    //获取用户名QString hostName = ui->ipEdit->text();  //获取ipquint16 port = ui->portEdit->text().toUInt();   //获取port//调用函数链接到主机//参数1:服务器的主机地址//参数2:端口号socket->connectToHost(hostName,port);//如果连接服务器成功,该客户端就会发射一个connected的信号//我们可以将该信号连接到自定义的槽函数中处理相关逻辑//由于该连接只需要连接一次,所以写在构造函数ui->conbtn->setEnabled(false);ui->disconbtn->setEnabled(true);ui->usernameLab->setEnabled(false);ui->ipEdit->setEnabled(false);ui->portEdit->setEnabled(false);
}
//关于处理connected信号的槽函数的定义
void Widget::connected_slot()
{QMessageBox::information(this,"成功","连接服务器成功");//顺便向服务器发送一条消息xxx进入聊天室QString msg = userName +": 进入聊天室";socket->write(msg.toLocal8Bit());}
//关于处理readyRead信号的槽函数的定义
void Widget::readyRead_slot()
{//读取该客户端中的数据QByteArray msg = socket->readAll();//将数据展示在ui界面ui->msglist->addItem(QString::fromLocal8Bit(msg));
}
//发送按钮对应的槽函数
void Widget::on_sendbtn_clicked()
{//获取ui界面编辑的文本内容QString m =ui->msgEdit->text();//整合发送的信息QString msg =userName+":"+m;//将消息发送给服务器socket->write(msg.toLocal8Bit());//将消息编辑器中的内容清空ui->msgEdit->clear();
}
//断开服务器按钮对应的槽函数
void Widget::on_disconbtn_clicked()
{//准备要发送人的信息QString msg =userName+":离开聊天室";socket->write(msg.toLocal8Bit());//调用成员函数disconnectFromHost//功能:断开客户端与服务器的连接socket->disconnectFromHost();//当客户端与服务器断开连接后,该客户端就会自动发射一个disconnected的信号//我们可以将该信号与自定义的槽函数连接//由于只要连接一次,所以写在构造函数socket->write(msg.toLocal8Bit());ui->conbtn->setEnabled(true);ui->disconbtn->setEnabled(false);ui->usernameLab->setEnabled(true);ui->ipEdit->setEnabled(true);ui->portEdit->setEnabled(true);
}
//关于处理disconnected信号的槽函数的定义
void Widget::disconnected_slot()
{QMessageBox::information(this,"退出","退出服务器");//顺便向服务器发送一条消息xxx退出聊天室QString msg = userName +": 退出聊天室";}

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

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

相关文章

微波系统中散射参量S、阻抗参量Z及导纳参量Y之间的关系及MATLAB验证

微波系统中散射参量S、阻抗参量Z及导纳参量Y之间的关系及MATLAB验证 用HFSS设计了一微波元件&#xff0c;仿真出了其散射参量S、阻抗参量Z及导纳参量Y&#xff0c;用MATLAB验证他们之间的关系 HFSS设计螺旋线圈 用HFSS设计了一个螺旋线圈&#xff0c;如上图所示。 进行仿真&…

8K视频来了,8K 视频编辑的最低系统要求

当今 RED、Canon、Ikegami、Sony 等公司的 8K 摄像机以及 8K 电视&#xff0c;许多视频内容制作人和电影制作人正在认真考虑 8K 拍摄、编辑和后期处理&#xff0c;需要什么样的系统来处理如此海量的数据&#xff1f; 中央处理器&#xff08;CPU&#xff09; 首先&#xff0c;…

Spring Security安全登录的调用过程以及获取权限的调用过程

1.第一次登录时候调用/user/login整个流程分析 (0)权限授理 首先调用SecurityConfig.java中的config函数将jwtAuthenticationTokenFilter过滤器放在UsernamePasswordAuthenticationFilter之前 Override protected void configure(HttpSecurity http) throws Exception{......…

FinClip 支持创建 H5应用类小程序;PC 终端 优化升级

FinClip 的使命是使您能够通过小程序解决关键业务流程挑战&#xff0c;并完成数字化转型。不妨让我们看看本月产品与市场发布亮点&#xff0c;是否有助于您实现目标。 产品方面的相关动向&#x1f447;&#x1f447;&#x1f447; FinClip 支持创建 H5应用类小程序 近期我们…

MongoDB常用的比较符号和一些功能符号

比较符号 results collection.find({age: {$gt: 20}})功能符号 results collection.find({name: {$regex: ^M.*}})

怎么把pdf转换成高清图片?

怎么把pdf转换成高清图片&#xff1f;最近&#xff0c;我的同事遇到了一个问题&#xff0c;现在她需要将一些pdf文件转换成高清的图片&#xff0c;这件事情让让她感到非常无助&#xff0c;因为她非常着急需要将这些文件转换为图片格式&#xff0c;以便更好的在今后的工作中进行…

Ubuntu 22.04.2 LTS 安装python3.6后报错No module named ‘ufw‘

查明原因&#xff1a; vim /usr/sbin/ufw 初步判断是python版本的问题。 # 查看python3软链接 ll /usr/bin/python3 将python3的软链接从python3.6换成之前的3.10&#xff0c;根据自己电脑情况。 可以查看下 /usr/bin 下有什么 我这是python3.10 所以解决办法是 # 移除py…

工业互联网龙头企业研祥智能加入 openKylin

导读近日&#xff0c;研祥智能科技股份有限公司&#xff08;以下简称 “研祥智能”&#xff09;签署 openKylin 社区 CLA&#xff08;Contributor License Agreement 贡献者许可协议&#xff09;&#xff0c;正式加入 openKylin 开源社区。 研祥智能于 1993 年 12 月 31 日成立…

如何让insert程序速度快,可以试试联合SQL(insert 和 select 一起使用)?

查询添加可选择SQL执行&#xff0c;速度远超程序执行 insert 和 select案例 insert into 表1(列1,列2,列3,...) select 列1,列2,列3,...from表2(GROUP BY 列)116511 条数据 耗时45秒&#xff0c; 如果是程序查询然后再insert&#xff0c;则需要30分钟左右&#xff01;&#x…

Server - PyTorch BFloat16 “TypeError: Got unsupported ScalarType BFloat16“ 解决方案

欢迎关注我的CSDN&#xff1a;https://spike.blog.csdn.net/ 本文地址&#xff1a;https://spike.blog.csdn.net/article/details/132665807 BFloat16 类型是 16 位的浮点数格式&#xff0c;可以用来加速深度学习的计算和存储。BFloat16 类型的特点是保留 32 位浮点数&#xff…

企业级智能PDF及文档处理SDK GdPicture.NET 14.2 Crack

企业级智能PDF及文档处理SDK GdPicture.NET 提供了一组非常先进的 API&#xff0c;这些 API 利用了人工智能、机器学习和模糊逻辑算法等尖端技术。经过超过 15 年的持续研究和对创新的专注&#xff0c;我们的 SDK 已成为市场上针对PDF、OCR、条形码、文档成像和各种格式最全面的…

Apache Linkis 与 OceanBase 集成:实现数据分析速度提升

导语&#xff1a;恭喜 OceanBase 生态全景图中又添一员&#xff0c;Apache Linkis 构建了一个计算中间件层&#xff0c;以促进上层应用程序和底层数据引擎之间的连接、治理和编排。 近日&#xff0c;计算中间件 Apache Linkis 在其新版本中通过数据源功能&#xff0c;支持用户通…

行军遇到各种复杂地形怎么处理?

行军遇到各种复杂地形怎么处理&#xff1f; 【安志强趣讲《孙子兵法》第30讲】 【原文】 凡军好高而恶下&#xff0c;贵阳而贱阴&#xff0c;养生而处实&#xff0c;军无百疾&#xff0c;是谓必胜。 【注释】 阳&#xff0c;太阳能照到的地方。阴&#xff0c;太阳照不到的地方。…

华为Mate 60系列安装谷歌服务框架,安装Play商店,Google

华为Mate 60 Pro悄悄的上架。但是却震撼市场的强势登场,Mate 60系列默认搭载的就是鸿蒙4.0。那么mate 60加上4.0是否可以安装谷歌服务框架呢&#xff1f;本机到手经过测试是可以安装的&#xff0c;但是在解决play非保护机制认证还通知这个问题上,他和鸿蒙3.0是不一样的。如果我…

Flink(java版)

watermark 时间语义和 watermark 注意:数据进入flink的时间&#xff1a;如果用这个作为时间语义就不存在问题&#xff0c;但是开发中往往会用处理时间 作为时间语义这里就需要考虑延时的问题。 如上图&#xff0c;数据从kafka中获取出来&#xff0c;从多个分区中获取&#xf…

ubuntu 22.04安装cuda、cudnn、conda、pytorch

1、cuda 视频连接 https://www.bilibili.com/video/BV1bW4y197Mo/?spm_id_from333.999.0.0&vd_source3b42b36e44d271f58e90f86679d77db7cuda 11.8 https://developer.nvidia.com/cuda-toolkit-archive点击进入 https://developer.nvidia.com/cuda-11-8-0-download-arc…

gRPC-GateWay Swagger 实战

上一次我们分享了关于 gRPC-Gateway 快速实战 &#xff0c;可以查看地址来进行回顾 : 也可以查看关于 gRPC 的历史文章&#xff1a; gRPC介绍 gRPC 客户端调用服务端需要连接池吗&#xff1f; gRPC的拦截器 gRPC的认证 分享一下 gRPC- HTTP网关 I 今天主要是分享关于 gRPC-G…

Linux相关指令(下)

cat指令 查看目标文件的内容 常用选项&#xff1a; -b 对非空输出行编号 -n 对输出的所有行编号 -s 不输出多行空行 一个重要思想&#xff1a;linux下一切皆文件&#xff0c;如显示器文件&#xff0c;键盘文件 cat默认从键盘中读取数据再打印 退出可以ctrlc 输入重定向<…

kubernetes/cluster/addons/fluentd-elasticsearch

#发文福利# 一、前言 kubernetes 1.23搭建EFK所用到的yaml文件&#xff0c;本帖均来自kubernetes官方&#xff0c;且没做修改。 https://github.com/kubernetes/kubernetes/tree/release-1.23/cluster/addons/fluentd-elasticsearch 二、EFK 原版yaml 1、create-logging-na…

机器学习笔记之最优化理论与方法(六)无约束优化问题——最优性条件

机器学习笔记之最优化理论与方法——无约束优化问题[最优性条件] 引言无约束优化问题无约束优化问题最优解的定义 无约束优化问题的最优性条件无约束优化问题的充要条件无约束优化问题的必要条件无约束优化问题的充分条件 引言 本节将介绍无约束优化问题&#xff0c;主要介绍无…