问题:
- 先创建udp socket并连接readyRead信号,槽函数可以正常进入;
- 程序运行中通过按钮事件断开readyRead后,再连接上,槽函数不能正常进入。
定位结果:
断开后再连接时,必须先使用readDatagram函数读下数据,然后再连接,槽函数就可以正常响应。
以下代码可正常运行:
QByteArray datagram;
socket->readDatagram(datagram.data(), 1);
QMetaObject::Connection conn;
conn = connect(socket, &QUdpSocket::readyRead, this, &MyClass::readData);