C++ 使用Echo客户端示例从Qt UI连接到WebSocket服务器

C++ 使用Echo客户端示例从Qt UI连接到WebSocket服务器,c++,qt,websocket,C++,Qt,Websocket,我在CLI中使用,它工作正常。我正在尝试从Qt GUI项目连接到此服务器。我有一个主窗口类与适当的插槽 void MainWindow::on_pushButton_clicked() { qDebug() << "Push btn clicked"; EchoClient client(QUrl(QStringLiteral("ws://localhost:1234"))); } 在C++和QT中,我是全新的。 为什么会发生这种情况?是UI中处理线程的问题吗?我应

我在CLI中使用,它工作正常。我正在尝试从Qt GUI项目连接到此服务器。我有一个主窗口类与适当的插槽

void MainWindow::on_pushButton_clicked()
{
    qDebug() << "Push btn clicked";
    EchoClient client(QUrl(QStringLiteral("ws://localhost:1234")));
}
在C++和QT中,我是全新的。 为什么会发生这种情况?是UI中处理线程的问题吗?我应该知道什么


Qt 5.4。

在函数的
中,您正在函数堆栈中创建EchoClient(异步)。函数一退出,EchoClient对象就从堆栈中销毁

您可以考虑不同的解决方案,例如在MainWindow类中创建私有字段

private EchoClient *client;
然后在主窗口构造函数中将其设置为null:

this->client = NULL;
仅在此时,在click()例程中执行类似操作:

void主窗口::在按钮上点击()
{
qDebug()客户端==NULL)
{
this->client=newechoclient(QUrl(QStringLiteral(“ws://localhost:1234”));
}
其他的
qWarning()
this->client = NULL;
void MainWindow::on_pushButton_clicked()
{
    qDebug() << "Push btn clicked";
    if (this->client == NULL)
    {
        this->client = new EchoClient(QUrl(QStringLiteral("ws://localhost:1234")));
    }
    else
        qWarning() << "Carefull, the client is already running";
}