如何在QThread内处理信号/空闲?

时间:2013-09-27 16:56:09

标签: qt qthread qt-signals qtcore

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

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

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

我在类的.h文件中定义了readCommand,作为"私有插槽" - 因为它只是从课堂内调用。希望是对的。

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

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

1 个答案:

答案 0 :(得分:0)

  

我在类的.h文件中定义了readCommand,作为a   "私人插槽" - 因为它只是从课堂内调用。希望   那是对的。

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

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