C++ 使用Echo客户端示例从Qt UI连接到WebSocket服务器
我在CLI中使用,它工作正常。我正在尝试从Qt GUI项目连接到此服务器。我有一个主窗口类与适当的插槽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中处理线程的问题吗?我应
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";
}