0

我创建了一个简单的线程网络服务器。main.cpp 调用 app.exec() 空闲,一旦我建立连接,线程就会按预期启动。

在线程的 run() 函数中,我将一个信号从 readyRead 连接到一个名为 readCommand 的槽:

connect(tcpSocketPtr, SIGNAL(readyRead()), this, SLOT(readCommand()) );

我已经在类的 .h 文件中定义了 readCommand 作为“私有槽”——因为它只能从类中调用。希望那是对的。

在上面的连接之后,run() 函数返回。没有 app.exec() 调用或任何东西。这可能是问题吗?我是否必须调用一些函数来使线程监听信号?

当我向端口发送文本时,readCommand 函数永远不会触发......而且我不知道如何调试这个......建议?

4

1 回答 1

0

我已经在类的 .h 文件中定义了 readCommand 作为“私有槽”——因为它只能从类中调用。希望那是对的。

是的,这看起来是正确的。

但是,您应该在方法int QThread::exec() [protected]内部使用void QThread::run() [virtual protected]来启动线程执行,而不是几乎立即返回。

于 2013-09-27T18:33:58.490 回答