Qt UDPsocket readyread() SIGNAL 发出两次

Qt UDPsocket readyread() SIGNAL emit twice

本文关键字:两次 SIGNAL UDPsocket readyread Qt      更新时间:2023-10-16

我使用 QUDPsocket 发送消息。我连接: connect(socket,SIGNAL(ReadyRead()),this,SLOT(processPendingDatagrams()));

当我在main中调用sendmessage("123")时,processPendingDatagrams()只运行一次。

但是当我在按钮单击事件中调用 sendmessage("123") 时,它会运行两次。 如何解决问题?

发送消息():

socket->writeDatagram(data,data.length(),QHostAddress::Broadcast, port);

如果服务器根据客户端的操作注意到它一次或两次,那么这是客户端的错。

在点击事件中,添加以下内容:

qDebug() << "Click event, sending message...";

您可能会注意到它被发送了两次,单击向下和释放按钮时。相反,您可以执行以下操作:

connect(myButton, &QPushButton::clicked, [this]() {sendMessage("123");}

或者做你自己的老虎机。