Qt文档阅读笔记-Broadcast Sender Example解析
此例子展示了使用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解析相关推荐
- Qt文档阅读笔记-Broadcast Sender Example与Broadcast Receiver Example解析
目录 Broadcast Sender Example Broadcast Receiver Example Broadcast Sender Example 调用QtNetwork API实现发出广 ...
- Qt文档阅读笔记-Broadcast Receiver Example解析
这篇博文的例子是说明如何在局域网上搭建广播包接收端. 这里使用了Qt Network API,搭建本地广播包接收端. 结构如下: 代码如下: receiver.h #ifndef RECEIVER_H ...
- Qt文档阅读笔记-Object Model初步解析
对象模型 标准C++对象模型提供了对象范式在运行时的高效性.但是他的一些静态性质在某些领域是不灵活的.在GUI程序中不仅要运行时的高效还需要较高的灵活性.Qt对象模型不急结合了C++运行时的高效并且还 ...
- Qt文档阅读笔记-Custom Items Example解析
这个实例展示了在图中添加自定义item.并且演示了如何去移动. Obj网格文件添加到资源文件中. 注意:一般是在meshes上增加纹理,这里可以直接用QImage添加一个单独的颜色. QImage c ...
- Qt文档阅读笔记-GridLayout QML Type解析与实例
目录 基本概念 代码与实例 基本概念 如果QGridLaout大小被调整,所有item的布局都将会重新排列.和widget的QGridLayout一样.如果想要一行或一列的布局可以使用RowLayou ...
- Qt文档阅读笔记-Image QML官方解析与实例
目录 官方解析 博主例子 官方解析 Image Image用于展示图片. 使用source属性可以使用URL指定一张图片. 只要是Qt能打开的图片都支持,如果要展示动态图,要使用:BnimatedSp ...
- Qt文档阅读笔记-Widgets Tutorial官方解析及实例
目录 官方解析 博主栗子 官方解析 QWiget通常作为其他窗口的容器,可以使用QWidget到达最小代价定义自定义控件(经验:通常可以采用子类QLabel做成自定义控件) 可以通过构建他的父类对象来 ...
- Qt文档阅读笔记-easingCurve:QEasingCurve官方解析及实例
目录 官方解析 博主例子 官方解析 easingCurve:QEasingCurve 这个属性保留了动画的缓和曲线. 他定义了缓和取消,默认情况下,使用线性缓和曲线,产生线性插入值.下面举出其他曲线的 ...
- Qt文档阅读笔记-编写应用脚本解析与实例
目录 官方解析 博主例子 官方解析 编写应用脚本 Qt提供了JavaScript脚本对应用程序的支持.下面将全方位说明JavaScript在Qt中的应用. Scripting Classes 如下的类 ...
最新文章
- Layui Excle/csv数据导出
- [转]程序集之GAC---Global Assembly Cache
- JavaScript Office文档在线编辑备忘
- 小米一键上锁工具_小米新品人脸识别智能锁:3D识别加红外,开门只需看一眼...
- 【已解决】Linux redhat 6.4上安装VNC Server
- java 减法_java 加减法2
- 微信小程序开放直播能力,你怎么看?
- LVDS收发传输实例
- mpvue微信小程序动画_入门微信小程序
- php var export 数组,PHP关于数组缓存JSON、serialize、var_export的说明
- 发布文章自动上传图片并生成水印
- vuex 源码分析_Vuex源码解析(一):Module初始化
- ie11启用java时打不开_ie11升级后打不开怎么解决?
- 我的世界逆时空服务器怎么注册密码,我的世界1.7.10服务器逆时空
- revit二次开发概念_Revit二次开发教程:BIM自学入门Revit二次开发
- 观《怦然心动》之后的感悟
- 辗转相除法——求最大公约数
- SOUI中心事件的使用实例
- 破解中国电信天翼宽带猫 贝尔e8-C光猫RG200O-CA_V1.1SP002超级密码获取、开启自动拨号和无线路由功能
- 轻量级过程改进之需求管理