QTcpServer-如何使用多线程-示例不好

QTcpServer-如何使用多线程-示例不好,qt,signals-slots,qthread,qtcpsocket,qtcpserver,Qt,Signals Slots,Qthread,Qtcpsocket,Qtcpserver,我试图让QTcpServer为每个连接启动一个单独的线程。有一些示例代码可以做到这一点: 此代码通过子类化QThread来工作。如果我基于该示例构建代码,很快就会遇到“QObject:无法为处于不同线程中的父线程创建子线程”警告 Qt的文档建议不要将QThread子类化,因为这是“做错了”: 所以,我的问题是,如果Qt提供的示例代码直接违反了Qt推荐的实践,那么有没有正确方法的示例?到目前为止,我发现的任何示例都属于QThread子类。Qt是一个正在开发的产品。而且,我认为,将QThread子类

我试图让QTcpServer为每个连接启动一个单独的线程。有一些示例代码可以做到这一点:

此代码通过子类化QThread来工作。如果我基于该示例构建代码,很快就会遇到“QObject:无法为处于不同线程中的父线程创建子线程”警告

Qt的文档建议不要将QThread子类化,因为这是“做错了”:


所以,我的问题是,如果Qt提供的示例代码直接违反了Qt推荐的实践,那么有没有正确方法的示例?到目前为止,我发现的任何示例都属于QThread子类。

Qt是一个正在开发的产品。而且,我认为,将QThread子类化仍然是一种法律实践。这只是一种较旧的技术,所以旧的示例使用它


您的问题似乎是在不同线程之间错误地使用QObject,而不是QThread子类化。首先尝试查找发出警告的代码。

我看不出有任何理由在另一个线程中移动
qtcserver
对象。它的实现是,它在后面运行连接,并在发生事件时发出信号。示例代码可以在中找到,因此让服务器在主线程中运行并且它的“worker”在后台处理事件也应该完成我正试图做的工作。“接受”部分发生在主事件循环上,因此发生在主线程上。当建立连接时,相应套接字上的TCP I/O应该发生在它自己的线程上。您能告诉我们您的代码实际上是什么样子的吗?