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

哈尔滨网站建设步骤网站背景跟着鼠标动的图怎么做

哈尔滨网站建设步骤,网站背景跟着鼠标动的图怎么做,公司自己做网站备案,鄂州市官网目录 一、讲述Qt信号槽机制与优势与不足 二、Qt信号和槽的本质是什么 三、描述QT中的文件流(QTextStream)和数据流(QDataStream)的区别 四、描述QT的TCP通讯流程 服务端:(QTcpServer) 客户端:(QTcpSocket&#xf…

目录

一、讲述Qt信号槽机制与优势与不足

二、Qt信号和槽的本质是什么

三、描述QT中的文件流(QTextStream)和数据流(QDataStream)的区别

四、描述QT的TCP通讯流程

服务端:(QTcpServer)

客户端:(QTcpSocket)

五、 描述UDP 之 UdpSocket通讯

六、多线程使用使用方法

七、多线程下,信号槽分别在什么线程中执行,如何控制


一、讲述Qt信号槽机制与优势与不足

优点:

①类型安全。需要关联的信号槽的签名必须是等同的。即信号的参数类型和参数个数同接受该信号的槽的参数类型和参数个数相同。若信号和槽签名不一致,编译器会报错。

②松散耦合。信号和槽机制减弱了Qt对象的耦合度。激发信号的Qt对象无需知道是那个对象的那个信号槽接收它发出的信号,它只需在适当的时间发送适当的信号即可,而不需要关心是否被接受和那个对象接受了。Qt就保证了适当的槽得到了调用,即使关联的对象在运行时被删除。程序也不会奔溃。

③灵活性。一个信号可以关联多个槽,或多个信号关联同一个槽。

不足:速度较慢。与回调函数相比,信号和槽机制运行速度比直接调用非虚函数慢10倍。

原因:①需要定位接收信号的对象。②安全地遍历所有关联槽。③编组、解组传递参数。④多线程的时候,信号需要排队等待。(然而,与创建对象的new操作及删除对象的delete操作相比,信号和槽的运行代价只是他们很少的一部分。信号和槽机制导致的这点性能损耗,对实时应用程序是可以忽略的。)

二、Qt信号和槽的本质是什么

回调函数。信号或是传递值,或是传递动作变化;槽函数响应信号或是接收值,或者根据动作变化来做出对应操作。

三、描述QT中的文件流(QTextStream)和数据流(QDataStream)的区别

文件流(QTextStream)。操作轻量级数据(int,double,QString)数据写入文本件中以后以文本的方式呈现。

数据流(QDataStream)。通过数据流可以操作各种数据类型,包括对象,存储到文件中数据为二进制。

文件流,数据流都可以操作磁盘文件,也可以操作内存数据。通过流对象可以将对象打包到内存,进行数据的传输。

四、描述QT的TCP通讯流程

服务端:(QTcpServer)

①创建QTcpServer对象

②监听list需要的参数是地址和端口号

③当有新的客户端连接成功回发送newConnect信号

④在newConnection信号槽函数中,调用nextPendingConnection函数获取新连接QTcpSocket对象

⑤连接QTcpSocket对象的readRead信号

⑥在readRead信号的槽函数使用read接收数据

⑦调用write成员函数发送数据

Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);tcpServer = new QTcpServer;tcpServer->listen(QHostAddress("192.168.0.xxxx"),8888);connect(tcpServer,SIGNAL(newConnection()),this,SLOT(new_connect()));
}Widget::~Widget()
{delete ui;
}void Widget::new_connect()
{qDebug("--new connect--");QTcpSocket* tcpSocket = tcpServer->nextPendingConnection();connect(tcpSocket,SIGNAL(readyRead()),this,SLOT(read_data()));socketArr.push_back(tcpSocket);}void Widget::read_data()
{for(int i=0; i<socketArr.size(); i++){if(socketArr[i]->bytesAvailable()){char buf[256] = {};socketArr[i]->read(buf,sizeof(buf));qDebug("---read:%s---",buf);}}
}

客户端:(QTcpSocket)

①创建QTcpSocket对象

②当对象与Server连接成功时会发送connected 信号

③调用成员函数connectToHost连接服务器,需要的参数是地址和端口号

④connected信号的槽函数开启发送数据

⑤使用write发送数据,read接收数据

Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget)
{ui->setupUi(this);tcpSocket = new QTcpSocket;connect(tcpSocket,SIGNAL(connected()),this,SLOT(connect_success()));tcpSocket->connectToHost("172.20.10.xxxx",8888);
}Widget::~Widget()
{delete ui;
}void Widget::on_send_clicked()
{std::string msg = ui->msg->text().toStdString();int ret = tcpSocket->write(msg.c_str(),msg.size()+1);qDebug("--send:%d--",ret);
}void Widget::connect_success()
{ui->send->setEnabled(true);
}

五、 描述UDP 之 UdpSocket通讯

UDP(User Datagram Protocol即用户数据报协议)是一个轻量级的,不可靠的,面向数据报的无连接协议。在网络质量令人十分不满意的环境下,UDP协议数据包丢失严重。由于UDP的特性:它不属于连接型协议,因而具有资源消耗小处理速度快的优点,所以通常音频、视频和普通数据在传送时使用UDP较多,因为它们即使偶尔丢失一两个数据包,也不会对接收结果产生太大影响。所以QQ这种对保密要求并不太高的聊天程序就是使用的UDP协议。

在Qt中提供了QUdpSocket 类来进行UDP数据报(datagrams)的发送和接收。Socket简单地说,就是一个IP地址加一个port端口 。

流程:①创建QUdpSocket套接字对象 ②如果需要接收数据,必须绑定端口 ③发送数据用writeDatagram,接收数据用 readDatagram 。

六、多线程使用使用方法

方法一:①创建一个类从QThread类派生②在子线程类中重写 run 函数, 将处理操作写入该函数中 ③在主线程中创建子线程对象, 启动子线程, 调用start()函数

方法二:①将业务处理抽象成一个业务类, 在该类中创建一个业务处理函数②在主线程中创建一QThread类对象 ③在主线程中创建一个业务类对象 ④将业务类对象移动到子线程中 ⑤在主线程中启动子线程 ⑥通过信号槽的方式, 执行业务类中的业务处理函数

多线程使用注意事项: * 1. 业务对象, 构造的时候不能指定父对象 * 2. 子线程中不能处理ui窗口(ui相关的类) * 3. 子线程中只能处理一些数据相关的操作, 不能涉及窗口

七、多线程下,信号槽分别在什么线程中执行,如何控制

可以通过connect的第五个参数进行控制信号槽执行时所在的线程

  connect有几种连接方式,直接连接和队列连接、自动连接

  直接连接(Qt::DirectConnection):信号槽在信号发出者所在的线程中执行

  队列连接 (Qt::QueuedConnection):信号在信号发出者所在的线程中执行,槽函数在信号接收者所在的线程中执行

  自动连接 (Qt::AutoConnection):多线程时为队列连接函数,单线程时为直接连接函数。

http://www.yayakq.cn/news/336496/

相关文章:

  • 网站开发挣不挣钱做智能网站系统下载软件
  • 用dw做网站背景吕梁市城乡建设局网站
  • c#网站开发网易云课堂百度云下载网站购买域名吗
  • 昆明哪有做网站的深圳东门有什么好玩的
  • 源码时代网站首页优化
  • 南京 百度 网站建设加油站网站建设
  • 网站开发界面设计工具找做金融的网站有哪些方面
  • iframe 网站前台模板网站怎么做第三方登录
  • 网站开发技术题目wordpress最底部
  • python做公司网站三亚门户网站
  • dede怎么做商城网站深圳前500强企业名单
  • 网站模块是指什么地方注册网站域名要多少钱
  • 展示网站模版源码上海营销型网站建设方案
  • 专业制作网站的公司网站查询域名解析ip
  • 征二级网站建设意见 通知宁波信誉好品牌网站设计地址
  • 公司建设网站的费用吗怎么给制作网站谷歌地图
  • wordpress播放网易云wordpress安装说明seo工具好用
  • 淄博哪个网站做房屋出赁好wordpress 标签搜索引擎
  • 山东省建设业协会网站免费虚拟房屋设计软件
  • 网站源码是用什么做的廊坊文安建设局网站
  • 怎么做二级网站域名小程序开发平台哪家可信赖
  • 网站建设三站合一商城建站模板
  • 涿州网站建设涿州dw建设网站
  • 温州平阳县企业网站搭建推荐上海外贸网站建设公司
  • 杭州市建设信用网网站商业网站建设
  • 计算机专业论文网站开发电商分销平台
  • 西安哪些做网站的公司好营销策划公司名称
  • 泰安做网站建设的腾博会的网站是什么
  • 做一个网站中的搜索功能怎么做做彩票网站违法的吗
  • php网站本地搭建wordpress cms系统