此例子展示了使用Qt Network API发送广播包

程序结构如下:

代码如下:

sender.h

#ifndef SENDER_H
#define SENDER_H#include <QWidget>
#include <QTimer>QT_BEGIN_NAMESPACE
class QLabel;
class QPushButton;
class QUdpSocket;
QT_END_NAMESPACEclass Sender : public QWidget
{Q_OBJECTpublic:explicit Sender(QWidget *parent = nullptr);private slots:void startBroadcasting();void broadcastDatagram();private:QLabel *statusLabel = nullptr;QPushButton *startButton = nullptr;QUdpSocket *udpSocket = nullptr;QTimer timer;int messageNo = 1;
};#endif

main.cpp

#include <QApplication>#include "sender.h"int main(int argc, char *argv[])
{QApplication app(argc, argv);Sender sender;sender.show();return app.exec();
}

sender.cpp

#include <QtWidgets>
#include <QtNetwork>
#include <QtCore>#include "sender.h"Sender::Sender(QWidget *parent): QWidget(parent)
{statusLabel = new QLabel(tr("Ready to broadcast datagrams on port 45454"));statusLabel->setWordWrap(true);startButton = new QPushButton(tr("&Start"));auto quitButton = new QPushButton(tr("&Quit"));auto buttonBox = new QDialogButtonBox;buttonBox->addButton(startButton, QDialogButtonBox::ActionRole);buttonBox->addButton(quitButton, QDialogButtonBox::RejectRole);//! [0]udpSocket = new QUdpSocket(this);
//! [0]connect(startButton, &QPushButton::clicked, this, &Sender::startBroadcasting);connect(quitButton, &QPushButton::clicked, this, &Sender::close);connect(&timer, &QTimer::timeout, this, &Sender::broadcastDatagram);auto mainLayout = new QVBoxLayout;mainLayout->addWidget(statusLabel);mainLayout->addWidget(buttonBox);setLayout(mainLayout);setWindowTitle(tr("Broadcast Sender"));
}void Sender::startBroadcasting()
{startButton->setEnabled(false);timer.start(1000);
}void Sender::broadcastDatagram()
{statusLabel->setText(tr("Now broadcasting datagram %1").arg(messageNo));
//! [1]QByteArray datagram = "Broadcast message " + QByteArray::number(messageNo);udpSocket->writeDatagram(datagram, QHostAddress::Broadcast, 45454);
//! [1]++messageNo;
}

来分析下:

这里有个信号和槽,Qtimer关联了broadcastDatagram槽函数。发送广播包的就是这个槽函数。

来看下这个:

这里就调用了udpSocket的writeDatagram,第二个参数就是广播报的,通过这种方式发送广播报。

Qt文档阅读笔记-Broadcast Sender Example解析相关推荐

  1. Qt文档阅读笔记-Broadcast Sender Example与Broadcast Receiver Example解析

    目录 Broadcast Sender Example Broadcast Receiver Example Broadcast Sender Example 调用QtNetwork API实现发出广 ...

  2. Qt文档阅读笔记-Broadcast Receiver Example解析

    这篇博文的例子是说明如何在局域网上搭建广播包接收端. 这里使用了Qt Network API,搭建本地广播包接收端. 结构如下: 代码如下: receiver.h #ifndef RECEIVER_H ...

  3. Qt文档阅读笔记-Object Model初步解析

    对象模型 标准C++对象模型提供了对象范式在运行时的高效性.但是他的一些静态性质在某些领域是不灵活的.在GUI程序中不仅要运行时的高效还需要较高的灵活性.Qt对象模型不急结合了C++运行时的高效并且还 ...

  4. Qt文档阅读笔记-Custom Items Example解析

    这个实例展示了在图中添加自定义item.并且演示了如何去移动. Obj网格文件添加到资源文件中. 注意:一般是在meshes上增加纹理,这里可以直接用QImage添加一个单独的颜色. QImage c ...

  5. Qt文档阅读笔记-GridLayout QML Type解析与实例

    目录 基本概念 代码与实例 基本概念 如果QGridLaout大小被调整,所有item的布局都将会重新排列.和widget的QGridLayout一样.如果想要一行或一列的布局可以使用RowLayou ...

  6. Qt文档阅读笔记-Image QML官方解析与实例

    目录 官方解析 博主例子 官方解析 Image Image用于展示图片. 使用source属性可以使用URL指定一张图片. 只要是Qt能打开的图片都支持,如果要展示动态图,要使用:BnimatedSp ...

  7. Qt文档阅读笔记-Widgets Tutorial官方解析及实例

    目录 官方解析 博主栗子 官方解析 QWiget通常作为其他窗口的容器,可以使用QWidget到达最小代价定义自定义控件(经验:通常可以采用子类QLabel做成自定义控件) 可以通过构建他的父类对象来 ...

  8. Qt文档阅读笔记-easingCurve:QEasingCurve官方解析及实例

    目录 官方解析 博主例子 官方解析 easingCurve:QEasingCurve 这个属性保留了动画的缓和曲线. 他定义了缓和取消,默认情况下,使用线性缓和曲线,产生线性插入值.下面举出其他曲线的 ...

  9. Qt文档阅读笔记-编写应用脚本解析与实例

    目录 官方解析 博主例子 官方解析 编写应用脚本 Qt提供了JavaScript脚本对应用程序的支持.下面将全方位说明JavaScript在Qt中的应用. Scripting Classes 如下的类 ...

最新文章

  1. Layui Excle/csv数据导出
  2. [转]程序集之GAC---Global Assembly Cache
  3. JavaScript Office文档在线编辑备忘
  4. 小米一键上锁工具_小米新品人脸识别智能锁:3D识别加红外,开门只需看一眼...
  5. 【已解决】Linux redhat 6.4上安装VNC Server
  6. java 减法_java 加减法2
  7. 微信小程序开放直播能力,你怎么看?
  8. LVDS收发传输实例
  9. mpvue微信小程序动画_入门微信小程序
  10. php var export 数组,PHP关于数组缓存JSON、serialize、var_export的说明
  11. 发布文章自动上传图片并生成水印
  12. vuex 源码分析_Vuex源码解析(一):Module初始化
  13. ie11启用java时打不开_ie11升级后打不开怎么解决?
  14. 我的世界逆时空服务器怎么注册密码,我的世界1.7.10服务器逆时空
  15. revit二次开发概念_Revit二次开发教程:BIM自学入门Revit二次开发
  16. 观《怦然心动》之后的感悟
  17. 辗转相除法——求最大公约数
  18. SOUI中心事件的使用实例
  19. 破解中国电信天翼宽带猫 贝尔e8-C光猫RG200O-CA_V1.1SP002超级密码获取、开启自动拨号和无线路由功能
  20. 轻量级过程改进之需求管理

热门文章

  1. Java笔试题解答和部分面试题
  2. (转)iOS编程高性能之路-自动化编译脚本(1)
  3. 【下载中心】如何撰写分卷资源的标题、简介
  4. 关于硬盘运行在不同模式下的疑难解答
  5. 老师傅告诉你,学校学的编程知识,和工作所需要的差别有多大!
  6. 如何在weblogic启动时让其加载指定的jar库文件
  7. 最全的BI工具选型指南!给你五大箴言要记住
  8. 软件开发中的资源控制问题学习
  9. 今天一看,自己发的文章原来这么多了。openeim
  10. mysql数据库密码安全参数_MySQL 密码参数配置与修改 validate_password