receiver.cpp

来自「从QT的demo中的broadcast sender和broadcast rec」· C++ 代码 · 共 54 行

CPP
54
字号
#include <QtGui>
#include <QtNetwork>

#include "receiver.h"

Receiver::Receiver(QWidget *parent)
    : QDialog(parent)
{
    statusLabel = new QLabel(tr("Listening for broadcasted messages"));
    quitButton = new QPushButton(tr("&Quit"));
    
    //! [0]
    udpSocket = new QUdpSocket(this);
    udpSocket->bind(45454);
    //! [0]
    
    //! [1]
    connect(udpSocket, SIGNAL(readyRead()),
            this, SLOT(processPendingDatagrams()));
    //! [1]
    connect(quitButton, SIGNAL(clicked()), this, SLOT(close()));
    
    QHBoxLayout *buttonLayout = new QHBoxLayout;
    buttonLayout->addStretch(1);
    buttonLayout->addWidget(quitButton);
    buttonLayout->addStretch(1);
    
    QVBoxLayout *mainLayout = new QVBoxLayout;
    mainLayout->addWidget(statusLabel);
    mainLayout->addLayout(buttonLayout);
    setLayout(mainLayout);
    
    setWindowTitle(tr("Broadcast Receiver"));
}

void Receiver::processPendingDatagrams()
{
    //! [2]
    while (udpSocket->hasPendingDatagrams()) {
        
        QByteArray datagram;
        datagram.resize(udpSocket->pendingDatagramSize());
        udpSocket->readDatagram(datagram.data(), datagram.size());
        QList <QPoint> pointList;
        QDataStream in(&datagram, QIODevice::ReadOnly);

        in >> pointList; //从数据流中读出QPoint的list
        statusLabel->setText(tr("Received datagram: \"%1\"")
                             .arg(pointList.back().x())); //显示QList中最后一个QPoint的横坐标
    }
    //! [2]
    
}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?