qt中基于控制台的程序,如何实现套接字信号-槽方式的接收?(使用lambda语法)

一般认为,qt中传统的【信号-槽】都是配合类一起使用的,如果仅仅写一个简单的基于控制台的测试程序,如何实现呢?

这里以QUdpSocket为例,在控制台程序中使用lambda语法将接收处理函数直接写在【信号-槽】里,好处是简化了设计,不好是语法晦涩难懂,但一定抛砖引玉:

//创建udp套接字
QUdpSocket *udpSocket = new QUdpSocket();
udpSocket->bind(QHostAddress("127.0.0.1"), 7755);

//lambda表达式使用
QObject::connect(udpSocket, &QUdpSocket::readyRead, [&]()
{
	//接收处理
    while (udpSocket->hasPendingDatagrams())
    {
        QByteArray datagram;
        datagram.resize(udpSocket->pendingDatagramSize());

        QHostAddress sender;
        quint16 senderPort;

        udpSocket->readDatagram(datagram.data(), datagram.size(),
                                &sender, &senderPort);
        qDebug()<<sender<<" "<<senderPort;
        qDebug()<<datagram;
    }

});

 

已标记关键词 清除标记
©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页