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.rhkb.cn/news/124841.html

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

相关文章

Spring Cloud--从零开始搭建微服务基础环境【二】

&#x1f600;前言 本篇博文是关于Spring Cloud–从零开始搭建微服务基础环境【二】&#xff0c;希望你能够喜欢 &#x1f3e0;个人主页&#xff1a;晨犀主页 &#x1f9d1;个人简介&#xff1a;大家好&#xff0c;我是晨犀&#xff0c;希望我的文章可以帮助到大家&#xff0c;…

以antd为例 React+Typescript 引入第三方UI库

本文 我们来说说 第三方UI库 其实应用市场上的 第三方UI库都是非常优秀的 那么 react 我们比较熟的肯定还是 antd 我们还是来用它作为演示 这边 我们先访问他的官网 https://3x.ant.design/index-cn 点击开始使用 在左侧 有一个 在 TypeScript 中使用 通过图标我们也可以看出…

1000元订金?华为折叠屏手机MateX5今日开始预订,售价尚未公布

华为最新款折叠屏手机Mate X5今日在华为商城开始预订&#xff0c;吸引了众多消费者的关注。预订时需交纳1000元的订金&#xff0c;而具体售价尚未公布。据华为商城配置表显示&#xff0c;Mate X5预计将搭载Mate 60系列同款麒麟9000S处理器&#xff0c;或可能搭载麒麟9100处理器…

深入理解联邦学习——联邦学习的分类

分类目录&#xff1a;《深入理解联邦学习》总目录 在实际中&#xff0c;孤岛数据具有不同分布特点&#xff0c;根据这些特点&#xff0c;我们可以提出相对应的联邦学习方案。下面&#xff0c;我们将以孤岛数据的分布特点为依据对联邦学习进行分类。 考虑有多个数据拥有方&…

品牌渠道中的价值治理思路介绍

为什么要治理渠道价格&#xff1f; 价格的高低会影响产品的销量&#xff0c;间接影响品牌的发展&#xff0c;同时低价会存在传播性&#xff0c;不低价的店铺会受低价店铺的影响&#xff0c;为了销量会选择低价跟价&#xff0c;当低价链接不断增加&#xff0c;那渠道势必会越来…

hive中遇到length函数不支持bigint

背景 hive中遇到length函数不支持bigint 解决方法&#xff0c;sql转为string之后计算长度 SELECT COUNT(1) FROM ( select msisdn FROM tb_nrmr_sample_lt_dd_total where loc_time in (23090201,23090202,23090203,23090204,23090205,23090206) and length(cast(msisdn as…

2023年全国大学生数学建模B题

多波束测线问题 1.问题提出 单波束测深是利用声波在水中的传播特性来测量水体深度的技术。声波在均匀介质中作匀 速直线传播&#xff0c;在不同界面上产生反射&#xff0c;利用这一原理&#xff0c;从测量船换能器垂直向海底发射声波信号&#xff0c;并记录从声波发射到信号接…

2023国赛数学建模A题思路分析 - 定日镜场的优化设计

# 1 赛题 A 题 定日镜场的优化设计 构建以新能源为主体的新型电力系统&#xff0c; 是我国实现“碳达峰”“碳中和”目标的一项重要 措施。塔式太阳能光热发电是一种低碳环保的新型清洁能源技术[1]。 定日镜是塔式太阳能光热发电站(以下简称塔式电站)收集太阳能的基本组件&…

vue知识点————插槽 slot

slot 插槽 在父组件中引用的子组件 在父组件中写入百度 可在子组件slot插槽中展示出 父组件 <template><div id"app"><child url"https://www.baidu.com">百度</child></div> </template><script> import chil…

VMware 安装 黑群晖7.1.1-42962 DS918+

本例的用的文件 1、ARPL 1.0beat 引导文件 vmdk格式&#xff1a; https://download.csdn.net/download/mshxuyi/88309308 2、DS918_42962.pat&#xff1a;https://download.csdn.net/download/mshxuyi/88309383 一、引导文件 1、创建一个虚拟机 2、下一步&#xff0c;选稍后…

使用ChatGLMTokenizer处理json格式数据

我下载了一些中文wikipedia数据&#xff0c;准备采用ChatGLMTokenizer对齐进行清洗&#xff0c;整理为预训练语料。 import numpy as np import json from tqdm import tqdm from chatglm_tokenizer.tokenization_chatglm import ChatGLMTokenizertokenizer ChatGLMTokenizer…

PPT 架构师三板斧

PPT 架构师三板斧 目录概述需求&#xff1a; 设计思路实现思路分析1.多节点上PPT 架构师三板斧2.几张框框组合有组织3.专业词汇4.切记点要点 参考资料和推荐阅读 Survive by day and develop by night. talk for import biz , show your perfect code,full busy&#xff0c;ski…

PyCharm下载安装

PyCharm下载链接 点击下载PyCharm Community Edition社区版&#xff08;PyCharm Professional专业版需要收费&#xff0c;但可以免费试用 30 天&#xff0c;也可以找到激活方式&#xff1b;而社区版是完全免费的&#xff0c;初学者学习 Python建议使用社区版&#xff0c;不会有…

人工智能在电子商务中的突破性优势

最近都听说人工智能&#xff08;AI&#xff09;吗&#xff1f;电子商务的人工智能方面尤其受欢迎。当您以正确的方式使用正确的 AI技术时&#xff0c;您可以彻底改变您的经营方式。AI可帮助您节省时间、减少手动工作并提高数据的质量和准确性。 从本质上讲&#xff0c;您现在可…

C++ 围炉札记

文章目录 内存检测ProtoBufCMake、vscode、clion、Qt右值1、临时变量右值引用2、右值引用本质 函数返回std::functionPOD&#xff08;Plain Old Data&#xff09;thread_localnew / delete1、定位new运算符 可变参数模板typename和class1、C模板类头文件和实现文件分离的方法2、…

nested exception is java.io.FileNotFoundException

完整的错误信息&#xff1a; [main] ERROR o.s.boot.SpringApplication - Application run failed org.springframework.beans.factory.BeanDefinitionStoreException: Failed to parse configuration class [com.heima.article.ArticleApplication]; nested exception is java…

PostMan传时间参数一次性发送多次请求

文章目录 1. Date类型的参数&#xff0c; "date": "2023-09-07 22:01:51"格式会报错2. 在Pre-request Script预置时间3. 使用postman一次性发送多次请求 1. Date类型的参数&#xff0c; “date”: "2023-09-07 22:01:51"格式会报错 2. 在Pre-req…

如何查看MySQL的安装位置

MySQL的安装位置 1、查看安装目录 参数 路径 解释 备注 --basedir /usr/bin 相关命令目录 mysqladmin mysqldump等命令 --datadir /var/lib/mysql/ mysql 数据库文件的存放路径 --plugin-dir /usr/lib64/mysql/plugin mysql插件存放路径 --log-error …

基于pytorch LSTM 的股票预测

学习记录于《PyTorch深度学习项目实战100例》 https://weibaohang.blog.csdn.net/article/details/127365867?ydrefereraHR0cHM6Ly9ibG9nLmNzZG4ubmV0L20wXzQ3MjU2MTYyL2NhdGVnb3J5XzEyMDM2MTg5Lmh0bWw%2Fc3BtPTEwMDEuMjAxNC4zMDAxLjU0ODI%3D 1.tushare Tushare是一个免费、…

Mariadb高可用(四十)

目录 一、概述 &#xff08;一&#xff09;概念 &#xff08;二&#xff09;组成 &#xff08;三&#xff09;特点 &#xff08;四&#xff09;工作原理 二、实验要求 三、构建MHA &#xff08;一&#xff09;ssh免密登录 &#xff08;二&#xff09;安装mariadb数据库…