最新购物网站建设框架淘客联盟推广平台

bicheng/2026/1/19 18:24:58/文章来源:
最新购物网站建设框架,淘客联盟推广平台,有没有那种帮人做ppt的网站,凡科建站弊端一、设计要求 用QT做一个聊天室#xff0c; 制作一个服务器和客户端。可以进行注册、登录#xff0c; 登陆成功后可以使用昵称进行发送、接收消息。 能根据昵称、聊天内容查询历史记录#xff0c;也可以查询全部聊天记录。 。 二、客户端三级ui界面 三、项目代码 //在…一、设计要求 用QT做一个聊天室 制作一个服务器和客户端。可以进行注册、登录 登陆成功后可以使用昵称进行发送、接收消息。 能根据昵称、聊天内容查询历史记录也可以查询全部聊天记录。 。 二、客户端三级ui界面 三、项目代码 //在pro文件里加入 QT core gui network RC_FILE icon_config.rc //客户端dialog.h #ifndef DIALOG_H #define DIALOG_H#include QtWidgets #include QDebug // 网络连接类 #include QTcpSocket // 文本流 #include QTextStream #include QDateTime #include QByteArraynamespace Ui { class Dialog; }class Dialog : public QDialog {Q_OBJECTpublic:explicit Dialog(QWidget *parent 0);~Dialog();private:Ui::Dialog *ui;QTcpSocket *client;void printMsg(QString); // 输出内容到公屏void succRight();private slots:void btnConnClickedSlot(); // 连接按钮void btnSendClickedSlot(); // 发送按钮void connectedSlot(); // 连接成功的槽函数void disconnectedSlot(); // 断开连接的槽函数void readReadSlot(); // 接收数据的槽函数void btnHisClickedSlot();//历史记录void btnHisNameClickedSlot();//按照昵称void btnHisNeiClickedSlot();//按照内容void btnLoginClickedSlot();//登录/切换窗口void btnRegClickedSlot();//注册};#endif // DIALOG_H//客户端dialog.c #include dialog.h #include ui_dialog.hDialog::Dialog(QWidget *parent) :QDialog(parent),ui(new Ui::Dialog) {ui-setupUi(this);// 抢前台setWindowFlags(Qt::WindowStaysOnTopHint);connect(ui-pushButtonConn,SIGNAL(clicked()),this,SLOT(btnConnClickedSlot()));connect(ui-pushButtonSend,SIGNAL(clicked()),this,SLOT(btnSendClickedSlot()));client new QTcpSocket(this);// 建立网络连接检测的信号槽connect(client,SIGNAL(connected()),this,SLOT(connectedSlot()));connect(client,SIGNAL(disconnected()),this,SLOT(disconnectedSlot()));// 接收消息的信号槽connect(client,SIGNAL(readyRead()),this,SLOT(readReadSlot())); //历史connect(ui-pushButtonHis,SIGNAL(clicked()),this,SLOT(btnHisClickedSlot()));connect(ui-pushButtonName,SIGNAL(clicked()),this,SLOT(btnHisNameClickedSlot()));connect(ui-pushButtonNei,SIGNAL(clicked()),this,SLOT(btnHisNeiClickedSlot()));//切换窗口登录connect(ui-pushButtonLo,SIGNAL(clicked()),this,SLOT(btnLoginClickedSlot()));//注册connect(ui-pushButtonReg,SIGNAL(clicked()),this,SLOT(btnRegClickedSlot()));}Dialog::~Dialog() {disconnect(client,SIGNAL(disconnected()),this,SLOT(disconnectedSlot()));// 如果还在连接if(client-isOpen())client-close();delete ui; }void Dialog::btnConnClickedSlot() {// 发起连接请求// 默认用户输入的参数都对client-connectToHost(ui-lineEditIp-text(),ui-spinBox-value()); }void Dialog::printMsg(QString msg) {// 获得当前时间QString time QDateTime::currentDateTime().toString(yyyy-MM-dd-hh:mm:ss);ui-textBrowser-append(time);ui-textBrowser-append(msg);ui-textBrowser-append(); }void Dialog::succRight() {ui-stackedWidget-setCurrentIndex(1); }void Dialog::btnSendClickedSlot() {// 获得昵称和消息内容QString user ui-lineEditUser-text();if(user){QMessageBox::warning(this,提示,请输入昵称);return;}QString msg ui-lineEditMsg-text();if(msg ){QMessageBox::warning(this,提示,请输入要发送的消息);return;}QString time QDateTime::currentDateTime().toString(yyyy-MM-dd-hh-mm-ss);// 创建文本流对象QTextStream output(client);// 连续输出发送output time:user : msg;// 清空消息输入框ui-lineEditMsg-clear();// 公屏显示msg userQString((本机):)msg;printMsg(msg); }void Dialog::connectedSlot() {// 屏蔽连接按钮开启发送按钮ui-pushButtonConn-setEnabled(false);ui-pushButtonConn-setText(已连接);ui-pushButtonSend-setEnabled(true);ui-stackedWidget-setCurrentIndex(1); }void Dialog::readReadSlot() {QTextStream input(client);QString text input.readAll();QString text1input.readLine(100);qDebug() text1;QStringList list text.split(:);QStringList list2 text1.split(:);qDebug()分割后数量list.size();qDebug() list2.size();if(list.size()4){if(textdlchengg){qDebug() text;ui-stackedWidget-setCurrentIndex(2);ui-textBrowser-clear();} // else if(list.size()3) // {// ui-textBrowser_2-append(text); // return; // }else{printMsg(text);}}else if(list.size()4){ui-textBrowser_2-append(text);return;} }void Dialog::btnHisClickedSlot() {ui-textBrowser_2-clear();QString user ui-lineEditUser-text();if(user){QMessageBox::warning(this,提示,请输入昵称);return;}QString time QDateTime::currentDateTime().toString(yyyy-MM-dd-hh-mm-ss);// 创建文本流对象QTextStream output(client);QString mm历史记录;output time:user : mm ; }void Dialog::btnHisNameClickedSlot() {ui-textBrowser_2-clear();QString user ui-lineEditUser-text();QString time hh;// 创建文本流对象QTextStream output(client);QString mm按照昵称;output time:user : mm ; }void Dialog::btnHisNeiClickedSlot() {ui-textBrowser_2-clear();QString user sjdhs;QString time 按照内容;// 创建文本流对象QString msg ui-lineEditMsg-text();if(msg ){QMessageBox::warning(this,提示,请输入要发送的消息);return;}QTextStream output(client);output time:user : msg ; }void Dialog::btnLoginClickedSlot() {QString user ui-lineEditUs-text();if(user){QMessageBox::warning(this,提示,请输入昵称);return;}QString pwd ui-lineEdit_2Pwd-text();if(pwd ){QMessageBox::warning(this,提示,请输入密码);return;}// 创建文本流对象QTextStream output(client);// 连续输出发送QString maghha;QString haflele;output user : pwd:mag:haf;}void Dialog::btnRegClickedSlot() {QString user ui-lineEditUs-text();if(user){QMessageBox::warning(this,提示,请输入昵称);return;}QString pwd ui-lineEdit_2Pwd-text();if(pwd ){QMessageBox::warning(this,提示,请输入密码);return;}// 创建文本流对象QTextStream output(client);// 连续输出发送output user : pwd; }void Dialog::disconnectedSlot() {// 开启连接按钮屏蔽发送按钮ui-pushButtonConn-setEnabled(true);ui-pushButtonConn-setText(连接);ui-pushButtonSend-setEnabled(false);// 弹窗printMsg(连接已断开);QMessageBox::warning(this,提示,连接已断开);ui-stackedWidget-setCurrentIndex(0); }//服务器dialog.h #ifndef DIALOG_H #define DIALOG_H#include QtWidgets #include QDebug // 连接管理类 #include QTcpServer #include QDateTime // 连接类 #include QTcpSocket // 文本流 #include QTextStream#include QButtonGroup #include QSqlDatabase #include QDebug #include QSqlError #include QMessageBox #include QSqlQuery #include QByteArraynamespace Ui { class Dialog; }class Dialog : public QDialog {Q_OBJECTpublic:explicit Dialog(QWidget *parent 0);~Dialog();private:Ui::Dialog *ui;QTcpServer* server; // 管理对象母鸡void printMsg(QString); // 输出内容到公屏QTcpSocket* socket NULL; // 连接对象绿蛋QListQTcpSocket* sockets;QListQString ips;QSqlDatabase db;void connect2DB(); // 连接到数据库1void createTable();// 建表void createTable2();void insertData(); // 插入数据void selectAll(int); // 数据全查void selectLOgin(QString,QString,int);void selectName(QString,int);void selectNei(QString,int);private slots:// 新连接来了的槽函数void newConnSlot();// 连接掉线的信号槽void disconnetedSlot();// 有数据可读时的槽函数void readyReadSlot();};#endif // DIALOG_H//服务器dialog.c #include dialog.h #include ui_dialog.hDialog::Dialog(QWidget *parent) :QDialog(parent),ui(new Ui::Dialog) {ui-setupUi(this);// 抢前台setWindowFlags(Qt::WindowStaysOnTopHint);server new QTcpServer(this);// 连接新连接来了的信号槽connect(server,SIGNAL(newConnection()),this,SLOT(newConnSlot()));// 开启监听服务server-listen(QHostAddress::Any,8887);connect2DB(); }Dialog::~Dialog() {if(server-isListening()) // 如果还在监听server-close();delete ui; }void Dialog::printMsg(QString msg) {// 获得当前时间QString time QDateTime::currentDateTime().toString(yyyy-MM-dd hh:mm:ss);ui-textBrowser-append(time);ui-textBrowser-append(msg);ui-textBrowser-append(); }void Dialog::connect2DB() {// 创建连接对象db QSqlDatabase::addDatabase(QSQLITE);// 设置数据库的文件名称db.setDatabaseName(book_management.db);// 打开数据库if(db.open()){qDebug() 连接成功;// createTable();// createTable2();}else{// 获得错误信息封装类QSqlError info db.lastError();// 提取错误文本QString text info.text();// 展示错误QMessageBox::critical(this,错误,text);}}void Dialog::createTable() {QString sql CREATE TABLE book(time TEXT PRIMARY KEY,name TEXT,msg TEXT);;// 创建数据库操作类对象QSqlQuery sq;if(sq.exec(sql)){qDebug() 建表成功;}else// 失败{// 获得错误信息封装类QSqlError info sq.lastError();// 提取错误文本QString text info.text();// 展示错误qDebug() text;}}void Dialog::createTable2() {QString sql2 CREATE TABLE class(name TEXT PRIMARY KEY,pwd TEXT);;// 创建数据库操作类对象QSqlQuery sq;if(sq.exec(sql2)){qDebug() 建表2成功;}else// 失败{// 获得错误信息封装类QSqlError info sq.lastError();// 提取错误文本QString text info.text();// 展示错误qDebug() text;} }void Dialog::selectAll(int i) {QString sql SELECT * FROM book;QSqlQuery sq;sq.prepare(sql);if(sq.exec(sql)){// 清空上次显示// ui-textBrowser-clear();while(sq.next())// 循环取出{// 取出一条数据库中的字段QString time sq.value(0).toString();QString name sq.value(1).toString();QString msg sq.value(2).toString();QString msa历史;// 拼接并显示QString text msa.append(:) time.append(:) name.append(:) msg;QTextStream output(sockets.at(i));output textendl;}}}void Dialog::selectLOgin(QString user, QString pwd2,int i) {QString nameuser;QString pwdpwd2;QString sql SELECT * FROM class WHERE name LIKE ? AND pwd LIKE ?;;QSqlQuery sq;sq.prepare(sql);if(sq.exec(sql)){while(sq.next()){qDebug() yes;QString user sq.value(0).toString();QString pwd sq.value(1).toString();QString text dlchengg;QTextStream output(sockets.at(i));outputtext;}}else{QSqlError info sq.lastError();// 提取错误文本QString text info.text();text.prepend(登录失败);QMessageBox::warning(this,警告,text);} }void Dialog::selectName(QString name1,int i) {QString namename1;QString sql SELECT * FROM book WHERE name LIKE ?;QSqlQuery sq;sq.prepare(sql);sq.addBindValue(name);if(sq.exec()){while(sq.next())// 循环取出{// 取出一条数据库中的字段QString time sq.value(0).toString();QString name sq.value(1).toString();QString msg sq.value(2).toString();QString msa历史;// 拼接并显示QString text msa.append(:)time.append(:) name.append(:) msg;QTextStream output(sockets.at(i));output textendl;}} }void Dialog::selectNei(QString msg, int i) {QString sql SELECT * FROM book WHERE msg LIKE ?;QSqlQuery sq;sq.prepare(sql);sq.addBindValue(msg.prepend(%).append(%));if(sq.exec()){while(sq.next())// 循环取出{// 取出一条数据库中的字段QString time sq.value(0).toString();QString name sq.value(1).toString();QString msg sq.value(2).toString();QString msa历史;// 拼接并显示QString text msa.append(:)time.append(:) name.append(:) msg;QTextStream output(sockets.at(i));output textendl;}} }void Dialog::newConnSlot() {// 获得服务器端的连接类对象socket server-nextPendingConnection();QTextStream output(socket);// 如果满员则踢出if(sockets.size() 20){qDebug() 聊天室满员;output QString(聊天室已达人数上限连接失败);socket-close();return;}sockets.append(socket);// 绿蛋收到消息的信号槽connect(socket,SIGNAL(readyRead()),this,SLOT(readyReadSlot()));// 绿蛋掉线的信号槽connect(socket,SIGNAL(disconnected()),this,SLOT(disconnetedSlot()));// 给客户端打个招呼output QString(服务器你好啊);// 获得对面的IP地址和端口号QString ip socket-peerAddress().toString();quint16 port socket-peerPort();QString portText QString::number(port);QString text 新连接来了;text.append(ip).append(:).append(portText);printMsg(text); }void Dialog::disconnetedSlot() {// 拿到发射者socket (QTcpSocket*)sender();for(int i 0;isockets.size();i){if(socket sockets.at(i)){qDebug() 第 i 个客户端掉线了;// 获得对面的IP地址和端口号QString ip sockets.at(i)-peerAddress().toString();quint16 port sockets.at(i)-peerPort();QString portText QString::number(port);QString text 连接已断开;text.append(ip).append(:).append(portText);printMsg(text);sockets.removeAt(i);}} }//接收数据 void Dialog::readyReadSlot() {for(int i0;isockets.size();i){if(sockets.at(i)-isReadable() sockets.at(i)-bytesAvailable()0){qDebug() 第 i 个客户端发的消息;QTextStream input(sockets.at(i));// 一口气都读了QString text input.readAll();//写入数据库QStringList list text.split(:);qDebug()分割后数量list.size();if(list.size()3){QString time list[0];QString name list[1];QString msg list[2];if(list[2]历史记录){selectAll( i);}else if(list[2]按照昵称){selectName(name,i);}else if(list[0]按照内容){selectNei(msg,i);}else{createTable();QString sql INSERT INTO book VALUES(?,?,?);;QSqlQuery sq;sq.prepare(sql);sq.addBindValue(time);sq.addBindValue(name);sq.addBindValue(msg);if(sq.exec()){qDebug()数据插入成功;// QMessageBox::information(this,通知,数据插入成功);}else{// 获得错误信息封装类QSqlError info sq.lastError();// 提取错误文本QString text info.text();// 展示错误text.prepend(数据插入失败);QMessageBox::warning(this,警告,text);}printMsg(text);for(int m0;msockets.size();m){if(mi)continue;QTextStream output(sockets.at(m));output text;}}}else if(list.size()2){createTable2();QString name list[0];QString pwd list[1];QString sql INSERT INTO class VALUES(?,?);;QSqlQuery sq;sq.prepare(sql);sq.addBindValue(name);sq.addBindValue(pwd);if(sq.exec()){qDebug()注册成功;// QMessageBox::information(this,通知,数据插入成功);}else{// 获得错误信息封装类QSqlError info sq.lastError();// 提取错误文本QString text info.text();// 展示错误text.prepend(注册失败);QMessageBox::warning(this,警告,text);}printMsg(text);for(int m0;msockets.size();m){if(mi)continue;QTextStream output(sockets.at(m));output text;}}else if(list.size()4){QString name list[0];QString pwd list[1];qDebug() namepwd;QString sql SELECT * FROM class WHERE name? AND pwd?;QSqlQuery sq;sq.prepare(sql);sq.addBindValue(name);sq.addBindValue(pwd);qDebug() yes;if(sq.exec()){// 取出一条数据库中的字段while(sq.next()){QString name sq.value(0).toString();QString pwd sq.value(1).toString();qDebug() namepwd;qDebug() yes;QString text dlchengg;QTextStream output(sockets.at(i));outputtext;}}else{QSqlError info sq.lastError();// 提取错误文本QString text info.text();text.prepend(登录失败);QMessageBox::warning(this,警告,text);}}}}} 四、项目结果

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

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

相关文章

做网站流量是什么wordpress去掉尾巴

在Windows 10上,你可以通过多种方式管理飞行模式,在本指南中,我将概述完成此配置的步骤。飞行模式是一种允许你通过单一选项快速禁用无线设备(如Wi-Fi、蓝牙、近场通信(NFC)、全球定位系统(GPS)和蜂窝)的功能。通常,当你在飞机上,或者你在禁止使用无线电信号的地方时…

网站制作与设计知识点建站平台备案

搬以前写的博客【2014-03-01 08:09】 图像连通域标记算法研究 ConnectedComponent Labeling 最近在研究一篇复杂下背景文字检测的论文。 “Detecting Text in Natural Scenes with Stroke Width Transform ” CPVR 2010的文章,它主要探讨利用文字内…

网站做进一步优化wordpress文字摘要

目录 1.DML(数据操作语言)1.添加数据2.修改数据3.删除数据 2.DQL(数据查询语言)1.DQL-语法2.基本查询3.条件查询(WHERE)1.语法:2.条件:3.案例: 4.聚合函数1.介绍2.常见聚合函数3.语法4.案例 5.分组查询(GROUP BY&#…

郑州专业网站建设公司网站制作教程切片

飞机乘坐流程/怎么坐飞机 编写原因对象人员经历背景飞机乘坐流程流程梗概订票去往机场办理登记牌/托运行李安检登机转机 飞行中下机 后记 编写原因 从上家单位裸辞,大概率下次不会找频繁出差的工作了,而日常出行应该也不会考虑飞机这种交通工具&#xf…

中国中小企业网站建设情况网站分类表

资源 Lua - Joe DFs Builds 或者在文章附加资源下载。 使用方法 在当前文件夹打开文件夹,使用cmd。srglue.exe srlua.exe in.lua out.exe 或 srglue srlua.exe in.lua out.exe in.lua:指用进行打包的lua文件。out.exe:指输出的exe文件的…

南京网站建设培训wordpress 热搜词

目录 一.前后端传输数据的编码格式(contentType) 1.form表单 2.编码格式 3.Ajax 4.代码演示 后端 前端HTML 二.Ajax发送JSON格式数据 1.引入 后端 前端 2.后端 接收到的数据为空 解决办法 3.request方法判断Ajax 4.总结 前端在通过ajax…

在线考试网站开发模板建站合同

本文分享主要描述了几种书写SQL时常见的一些隐藏错误,主要包括:在运算符中使用null值、在聚合数据时使用null值、求平均值时使用判断条件、滤条件中使用and和or、查询的列字段之间缺少逗号分隔、inner join与left join。都是一些比较细节的点&#xff0c…

vue可以做pc端网站吗seo实战密码读后感

3D裸眼技术大多处于研发阶段,它的研发分两个方向,一是硬件设备的研发,二为显示内容的处理研发。第二种已经开始小范围的商业运用。大众消费者接触的不多。从技术上来看,3D裸眼可分为光屏障式(Barrier)、柱状透镜(Lenticular Lens)…

建设企业网站哪家好建设网站的费用如何入账

一些文字来自于 Microsoft . (只需要读下面的红色文字即可!) 1 C# 语言版本控制 最新的 C# 编译器根据项目的一个或多个目标框架确定默认语言版本。 Visual Studio 不提供用于更改值的 UI,但可以通过编辑 .csproj 文件来更改值。…

建设网站 关于竣工结算的期限关于公司网站建设请示

CSS3 - 给div或者文字添加阴影(盒子阴影、文本阴影的使用) CSS3定义了两种阴影:盒子阴影和文本阴影。其中盒子阴影需要IE9及其更新版本,而文本阴影需要IE10及其更新版本。下面分别介绍两种阴影的使用: 1,盒子阴影 (1)盒子阴影的…

正规的网站制作在哪里网站怎么在工信部备案

周四早间,金价接近每盎司2,030美元,创下6天来的最高水平; 美联储确认鸽派政策转向,美元和美国国债收益率双双下挫; 英国央行和欧洲央行2023年的最终政策公告可能会进一步推高金价; 随着投资者重新评估美联储…

建设银行网站打不井微商城小程序哪个好

Python AI 绘画 本文我们将为大家介绍如何基于一些开源的库来搭建一套自己的 AI 作图工具。 需要使用的开源库为 Stable Diffusion web UI,它是基于 Gradio 库的 Stable Diffusion 浏览器界面 Stable Diffusion web UI GitHub 地址:GitHub - AUTOMATI…

河北省两学一做网站大型网站的优化方法

步骤 1,将QNX imge转换成android sparse镜像 这个QNX镜像可以是直接从QNX分区读取得到或者你的刷机包中的镜像: rootubuntu:~/workspace/$ file qnx_img.img qnx_img.img: DOS/MBR boot sector使用python tools/mksparse.py $镜像文件 转换为android …

宜昌企业网站建设哪个网站做签约设计师比较好

先跑起来 🥊 Python 什么是 Python? Python [ˈpaɪθɑ:n]是 一门 适合初学者 的编程语言 类库 众多 几行代码 就能 出 很好效果 应用场景丰富 在 各个应用领域 都有 行内人制作的 python 工具类库 非常专业、 好用 特别是 人工智能领域 pytho…

网站建设中图片是什么页面模板只有注册的人可以弄吗

一 springcloud stream的作用 1.1 springcloud stream作用 stream屏蔽底层消息中间件的差异,降低切换成本,统一消息的编程模型。 stream中的消息通信模式遵循了“发布-订阅”模式。 1.2 Binder作用 通过定义绑定器Binder作为中间层,实现…

移动端响应式网站怎么做移动端适配 wordpress

目录 * 491.递增子序列 💡解题思路 回溯三部曲 💻实现代码 * 46.全排列 💡解题思路 # 回溯三部曲 单层搜索的逻辑 💻实现代码 * 47.全排列 II 💡解题思路 💻实现代码 * 491.递增子序列 题目链…

学网站建设工作推广渠道包括哪些

访问者模式是一种行为设计模式,它允许你在不修改现有对象结构的情况下,定义新的操作。访问者模式通过将操作封装在一个访问者对象中,使得可以在不同的对象上执行不同的操作,从而实现了操作和对象的解耦。 在Java中&#x…

六安服装网站建设地址餐饮吸引客流的活动方案

全世界只有3.14 % 的人关注了青少年数学之旅随着科技的发展,机器人必然逐渐进入我们的生活,甚至在许多领域替代人类。以下是目前全球范围内最先进的一些机器人:Actroid-F这种实验性机器人的目标,是创造最逼真的仿人类机器人&#…

网站的费用多少网络促销

Go 语言中的 GIF 图像处理完全指南:image/gif的技术与实践 概述安装与基础设置导入 image/gif 包初步配置示例:设置一个简单的 GIF 编码环境 读取与解码 GIF 图像读取 GIF 文件解析 GIF 数据 创建与编码 GIF 图像创建 GIF 图像编码 GIF 图像 处理 GIF 动…

王晴儿网站建设自己做的小网站

当我们在编写程序时,往往需要处理可能发生的异常情况,以保证程序的稳定性和可靠性。这时,就可以使用异常处理机制。C中的异常处理机制通过try、catch和throw关键字实现。 异常处理机制基本上遵循以下的流程: 1. 在可能引发异常的…