我创建了一个简单的线程网络服务器。 main.cpp将app.exec()调用为空闲,一旦建立连接,线程将按预期触发。
在线程的run()函数中,我将readyRead中的信号连接到一个名为readCommand的插槽:
connect(tcpSocketPtr, SIGNAL(readyRead()), this, SLOT(readCommand()) );
我在类的.h文件中定义了readCommand,作为"私有插槽" - 因为它只是从课堂内调用。希望是对的。
在上面的连接之后,run()函数返回。没有app.exec()调用或任何东西。这可能是问题吗?我是否必须调用某些函数才能使线程监听信号?
当我向端口发送文本时,readCommand函数永远不会触发......我不知道如何调试这个...建议?
答案 0 :(得分:0)
我在类的.h文件中定义了readCommand,作为a "私人插槽" - 因为它只是从课堂内调用。希望 那是对的。
是的,这看起来是正确的。
但是,您应该在int QThread::exec() [protected]
方法中使用void QThread::run() [virtual protected]
来启动线程执行,而不是几乎立即返回。