Qt文档阅读笔记-Broadcast Receiver Example解析
这篇博文的例子是说明如何在局域网上搭建广播包接收端。
这里使用了Qt Network API,搭建本地广播包接收端。
结构如下:
代码如下:
receiver.h
#ifndef RECEIVER_H
#define RECEIVER_H#include <QWidget>QT_BEGIN_NAMESPACE
class QLabel;
class QUdpSocket;
QT_END_NAMESPACEclass Receiver : public QWidget
{Q_OBJECTpublic:explicit Receiver(QWidget *parent = nullptr);private slots:void processPendingDatagrams();private:QLabel *statusLabel = nullptr;QUdpSocket *udpSocket = nullptr;
};#endif
main.cpp
#include <QApplication>#include "receiver.h"int main(int argc, char *argv[])
{QApplication app(argc, argv);Receiver receiver;receiver.show();return app.exec();
}
receiver.cpp
#include <QtWidgets>
#include <QtNetwork>#include "receiver.h"Receiver::Receiver(QWidget *parent): QWidget(parent)
{statusLabel = new QLabel(tr("Listening for broadcasted messages"));statusLabel->setWordWrap(true);auto quitButton = new QPushButton(tr("&Quit"));//! [0]udpSocket = new QUdpSocket(this);udpSocket->bind(45454, QUdpSocket::ShareAddress);
//! [0]//! [1]connect(udpSocket, SIGNAL(readyRead()),this, SLOT(processPendingDatagrams()));
//! [1]connect(quitButton, SIGNAL(clicked()), this, SLOT(close()));auto buttonLayout = new QHBoxLayout;buttonLayout->addStretch(1);buttonLayout->addWidget(quitButton);buttonLayout->addStretch(1);auto mainLayout = new QVBoxLayout;mainLayout->addWidget(statusLabel);mainLayout->addLayout(buttonLayout);setLayout(mainLayout);setWindowTitle(tr("Broadcast Receiver"));
}void Receiver::processPendingDatagrams()
{QByteArray datagram;
//! [2]while (udpSocket->hasPendingDatagrams()) {datagram.resize(int(udpSocket->pendingDatagramSize()));udpSocket->readDatagram(datagram.data(), datagram.size());statusLabel->setText(tr("Received datagram: \"%1\"").arg(datagram.constData()));}
//! [2]
}
解释关键代码:
解释:广播报使用的是UDP,所以用的是QUdpSocket,并且绑定了端口45454。
解释:关联了信号与槽当网卡缓存中有数据时,调用对应的槽函数进行读取。
解释:当缓存区有数据时:hasPendingDatagrams(),然后就使用QByteArray获取读到的数据,最后设置到label上。
Qt文档阅读笔记-Broadcast Receiver Example解析相关推荐
- Qt文档阅读笔记-Broadcast Sender Example解析
此例子展示了使用Qt Network API发送广播包 程序结构如下: 代码如下: sender.h #ifndef SENDER_H #define SENDER_H#include <QWi ...
- Qt文档阅读笔记-Broadcast Sender Example与Broadcast Receiver Example解析
目录 Broadcast Sender Example Broadcast Receiver Example Broadcast Sender Example 调用QtNetwork API实现发出广 ...
- Qt文档阅读笔记-Multicast Receiver Example与Multicast Sender Example解析
目录 Multicast Receiver Example Multicast Sender Example Multicast Receiver Example 多播接收实例! 要注意几点: 1.这 ...
- 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 这个属性保留了动画的缓和曲线. 他定义了缓和取消,默认情况下,使用线性缓和曲线,产生线性插入值.下面举出其他曲线的 ...
最新文章
- java工程化_(二)Java工程化--Maven实践(示例代码)
- Hive数据分析——Spark是一种基于rdd(弹性数据集)的内存分布式并行处理框架,比于Hadoop将大量的中间结果写入HDFS,Spark避免了中间结果的持久化...
- Python--yield关键字的使用
- 27_多线程_第27天(线程安全、线程同步、等待唤醒机制、单例设计模式)_讲义...
- 从大学生到职场人,一段深刻的思维认知升级补丁
- jquery的鼠标移入移出事件hover、mouseenter、mouseleave、mouseover、mouseout
- day19【前台】支付
- 记2021上半年软考中级-数据库系统工程师考试
- java ee课程设计_javaee课程设计
- 多元函数的切向量和法向量
- QT调用WIN32 API代码,遇到无法解析
- 网易首支AI歌曲《醒来》发布:声音太逼真 能瞒过人类
- 解决Win7系统安装时缺少驱动
- 史上最全的全国特产一览表,到哪就买当地最正宗的特产!!!
- SQLI DUMB SERIES-3
- Python工程师需要学习的知识总结,送给需要的人
- 中 华 百 家 姓 一 览
- 巴菲特的在University of Florida商学院的一次演讲
- 裴蜀定理(Noi Color)应用
- Tita 如何助力组织目标层层落地