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

公司网站做百度广告如何报税适合30岁短期培训班

公司网站做百度广告如何报税,适合30岁短期培训班,wordpress影视主题52破解,天津旅游网站建设Qt服务器多线程 1、新建线程类2、修改线程头文件3、包含头文件,启动线程4、重写run()函数4.1把socket传过去4.2重写run()函数 5、创建处理接收到来自客户端数据的槽函数6、自定义一个信号用来把数据发送出去7、Widget接收信号8、创建处理sendToServer信号的槽函数9、…

Qt服务器多线程

  • 1、新建线程类
  • 2、修改线程头文件
  • 3、包含头文件,启动线程
  • 4、重写run()函数
    • 4.1把socket传过去
    • 4.2重写run()函数
  • 5、创建处理接收到来自客户端数据的槽函数
  • 6、自定义一个信号用来把数据发送出去
  • 7、Widget接收信号
  • 8、创建处理sendToServer信号的槽函数
  • 9、.h文件和.cpp文件
    • 9.1 mythread.h
    • 9.2 mythread.cpp
    • 9.3 Widget.h
    • 9.4Widget.cpp
  • 10、总结

1、新建线程类

在这里插入图片描述
在这里插入图片描述

2、修改线程头文件

#include <QObject>
#include <QThread>
#include <QTcpSocket>// 定义 myThread 类,继承自 QThread 类,用于创建处理客户端连接的独立线程
class myThread : public QThread

3、包含头文件,启动线程

#include <QWidget>
#include <QTcpServer>
#include <QTcpSocket>
#include <mythread.h>
//启动线程
myThread *t = new myThread(socket);     //创建线程对象
t->start();                     //开始线程

4、重写run()函数

4.1把socket传过去

myThread *t = new myThread(socket);     //创建线程对象
private:QTcpSocket *socket;      //创建网络通信对象,用来接受参数传递
public:// 显式构造函数,接受一个 QTcpSocket 指针参数 s,用于初始化 socket 成员变量explicit myThread(QTcpSocket *s);   
myThread::myThread(QTcpSocket *s)
{socket = s;
}

4.2重写run()函数

public:// 显式构造函数,接受一个 QTcpSocket 指针参数 s,用于初始化 socket 成员变量explicit myThread(QTcpSocket *s);   void run() override;        //线程处理函数
void myThread::run()
{//当有数据可读时,readyRead 信号被触发connect(socket, &QTcpSocket::readyRead, this, &myThread::clientHandle);
}

5、创建处理接收到来自客户端数据的槽函数

private slots:void clientHandle();     //处理来自客户端信息
//处理来自客户端的信息
void myThread::clientHandle()
{QByteArray data = socket->readAll();     // 使用 socket 成员变量读取所有可用的数据emit sendToServer(data);      // 发射 sendToServer 信号,并传递从 socket 读取到的数据
}

6、自定义一个信号用来把数据发送出去

signals:// 自定义信号 sendToServer,向服务器发送QByteArray 类型的数据void sendToServer(QByteArray data);
//处理来自客户端的信息
void myThread::clientHandle()
{QByteArray data = socket->readAll();     // 使用 socket 成员变量读取所有可用的数据emit sendToServer(data);      // 发射 sendToServer 信号,并传递从 socket 读取到的数据给服务器
}

7、Widget接收信号

//处理sendToServer信号
connect(t,&myThread::sendToServer, this, &Widget::threadHandle);

8、创建处理sendToServer信号的槽函数

void threadHandle(QByteArray data);     //处理sendToWidget信号的槽函数
//处理sendToServer信号
void Widget::threadHandle(QByteArray data)
{ui->serverRevtextEdit->setText(QString(data));     //显示接收到的数据
}

9、.h文件和.cpp文件

9.1 mythread.h

mythread.h

#ifndef MYTHREAD_H
#define MYTHREAD_H#include <QObject>
#include <QThread>
#include <QTcpSocket>// 定义 myThread 类,继承自 QThread 类,用于创建处理客户端连接的独立线程
class myThread : public QThread
{Q_OBJECT
public:// 显式构造函数,接受一个 QTcpSocket 指针参数 s,用于初始化 socket 成员变量explicit myThread(QTcpSocket *s);void run() override;        //线程处理函数signals:// 自定义信号 sendToServer,向服务器发送QByteArray 类型的数据void sendToServer(QByteArray data);private slots:void clientHandle();     //处理来自客户端信息private:QTcpSocket *socket;      //创建网络通信对象,用来接受参数传递};#endif // MYTHREAD_H

9.2 mythread.cpp

mythread.cpp

#include "mythread.h"myThread::myThread(QTcpSocket *s)
{socket = s;
}void myThread::run()
{//当有数据可读时,readyRead 信号被触发connect(socket, &QTcpSocket::readyRead, this, &myThread::clientHandle);
}//处理来自客户端的信息
void myThread::clientHandle()
{QByteArray data = socket->readAll();     // 使用 socket 成员变量读取所有可用的数据emit sendToServer(data);      // 发射 sendToServer 信号,并传递从 socket 读取到的数据给服务器
}

9.3 Widget.h

Widget.h

#ifndef WIDGET_H
#define WIDGET_H#include <QWidget>
#include <QTcpServer>
#include <QTcpSocket>
#include <mythread.h>#define PORT 8000QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACEclass Widget : public QWidget
{Q_OBJECTpublic:Widget(QWidget *parent = nullptr);~Widget();private slots:void newClientHandler();        //服务器处理//void serverRevMessage();        //服务器读取void threadHandle(QByteArray data);     //处理sendToWidget信号的槽函数private:Ui::Widget *ui;QTcpServer *server;         //定义服务器对象
};
#endif // WIDGET_H

9.4Widget.cpp

Widget.cpp

#include "widget.h"
#include "ui_widget.h"Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget)
{ui->setupUi(this);server = new QTcpServer(this);server->listen(QHostAddress::AnyIPv4,PORT);//有新的客户端连接,会发出信号connect(server,&QTcpServer::newConnection,this, &Widget::newClientHandler);}Widget::~Widget()
{delete ui;
}void Widget::newClientHandler()
{QTcpSocket *socket = server->nextPendingConnection();socket->peerAddress();socket->peerPort();ui->serveripLineEdit->setText((socket->peerAddress()).toString());ui->serverportLineEdit->setText(QString::number(socket->peerPort()));//服务器收到客户端发送的信息,sockket发出readyread信号
//    connect(socket,&QTcpSocket::readyRead, this, &Widget::serverRevMessage);//启动线程myThread *t = new myThread(socket);     //创建线程对象t->start();                     //开始线程//处理sendToServer信号connect(t,&myThread::sendToServer, this, &Widget::threadHandle);}//处理sendToServer信号
void Widget::threadHandle(QByteArray data)
{ui->serverRevtextEdit->setText(QString(data));     //显示接收到的数据
}//服务器读取
/*
void Widget::serverRevMessage()
{QTcpSocket *clientsocket = (QTcpSocket *)sender();ui->serverRevtextEdit->setText(clientsocket->readAll());
}
*/

10、总结

以上就是Qt实现多线程的整个过程了,浏览过程中,如若发现错误,欢迎大家指正,有

问题的可以评论区留言或者私信。 最后,如果大家觉得有所帮助的话,可以点个赞,谢

谢大家!永远相信美好的事情即将发生!
Qt实现多线程完成!
http://www.dtcms.com/wzjs/64919.html

相关文章:

  • 自己如何做电影网站优化外包服务公司
  • 学做烘培的网站网站网络推广优化
  • h5响应式的网站客源引流推广app
  • 没有文字的网站怎么优化班级优化大师免费下载
  • 网站建设公司谁管2022年seo最新优化策略
  • 建好网站后如何向里面加东西百度推广关键词技巧定价
  • 如何网站全部结构百度站长平台怎么用
  • 网站页面多大重庆seo小潘大神
  • 让别人做网站多久开始注册域名网络外贸推广
  • 大连企业做网站百度搜索引擎服务项目
  • 网站中英文转换js网络科技公司骗了我36800
  • 百度网网站建设的目标seo运营推广
  • wap建站程序合集郑州营销型网站建设
  • 查询网站服务器地址泰安seo公司
  • 合肥做网站首选 晨飞网络湖南专业seo推广
  • 茶道网站开发背景武汉网站优化公司
  • java做博客网站有哪些功能seo整合营销
  • 做网站的目的是啥网络服务器配置与管理
  • 做电影网站大概要多少钱国外搜索引擎大全百鸣
  • 东台做网站的抖音广告投放代理商
  • 商业网站建设开发西安百度seo推广电话
  • 网站开发连接效果如何制作一个网页页面
  • 网页设计毕业论文教程福州百度seo排名
  • 建设积分兑换商城网站网络营销策划书1500字
  • 网站建设二级分销免费做网站怎么做网站
  • 跳网站查询的二维码怎么做的企业网站的搜索引擎推广与优化
  • 线上平面设计兼职优化资源配置
  • 什么网站可以做直播站长工具seo查询
  • 茂名做网站的公司seo优化工具哪个好
  • 用自己电脑做网站服务器江苏搜索引擎优化