【发布时间】:2015-04-08 07:24:52
【问题描述】:
我在 CLI 中使用Websocket Echo Server Example,它工作正常。我正在尝试从我的 Qt GUI 项目连接到此服务器。我有一个带有适当插槽的 MainWindow 类
void MainWindow::on_pushButton_clicked()
{
qDebug() << "Push btn clicked";
EchoClient client(QUrl(QStringLiteral("ws://localhost:1234")));
}
和来自 CLI Websocket Echo Client Example 的 EchoClient 文件。
主要问题是当我按下表单上的按钮时无法连接到服务器。但是,我看到调试消息 “Push btn clicked”。它应该打印“Hello, world!”。但没有任何反应,没有错误。即使信号void EchoClient::onConnected() 也不会被触发。
但如果我将 EchoClient client(QUrl(QStringLiteral("ws://localhost:1234"))); 移动到 main.cpp 它会连接:
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
MainWindow w;
w.show();
EchoClient client(QUrl(QStringLiteral("ws://localhost:1234")));
return a.exec();
}
我是 C++ 和 Qt 的新手。 为什么会发生这种情况?它与 UI 中的处理线程有关吗?我应该知道什么?
Qt 5.4.
【问题讨论】: