Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在QThread内处理信号/空闲?_Qt_Qthread_Qt Signals_Qtcore - Fatal编程技术网

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

如何在QThread内处理信号/空闲?,qt,qthread,qt-signals,qtcore,Qt,Qthread,Qt Signals,Qtcore,我创建了一个简单的线程网络服务器。main.cpp将app.exec()调用为idle,一旦建立连接,线程就会按预期启动 在线程的run()函数中,我将readyRead的一个信号连接到一个名为readCommand的插槽: connect(tcpSocketPtr, SIGNAL(readyRead()), this, SLOT(readCommand()) ); 我在类的.h文件中将readCommand定义为“私有槽”,因为它只从类内部调用。希望这是对的 完成上述连接后,run()函数返

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

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

connect(tcpSocketPtr, SIGNAL(readyRead()), this, SLOT(readCommand()) );
我在类的.h文件中将readCommand定义为“私有槽”,因为它只从类内部调用。希望这是对的

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

当我将文本发送到端口时,readCommand函数永远不会启动…我不知道如何调试它..建议

我在.h文件中为类定义了readCommand,作为 “专用插槽”-因为它仅从类内调用。希望 对

是的,看起来不错


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

您需要在
run()
的主体中调用
QThread::exec()
来启动线程的事件循环。否则,线程将在到达
run()
@Michelle:您没有选择答案的原因是什么?回复中缺少了什么?一年多后还是没有解决吗?已经解决了,但唯一一个接受检查的答案是错误的。。。