我是qt的新手,并尝试创建一个qt应用程序。截至目前,该应用程序有一个运行libevent事件循环的线程。我想创建另一个线程(这将是负责ssl请求的永久网络qt线程)。
我创建了子对象QOBject的WorkerObject。另外我有一个MyThread,它继承QThread,它在run方法中运行事件循环。我在main中创建了这个线程,并在应用程序结束时终止它。
我想在WorkerObject内部进行的所有网络操作(包括发布请求)。如何以及在何处创建适当的WorkerObject,以便在MyThread的事件循环内处理所有信号和信号。因为例如,每当用户要我发送它时,我都需要调用方法(发送post / get请求)。
提前感谢您的回答。
答案 0 :(得分:1)
在QThread中使用对象的条件是,一旦线程启动,它们必须仅通过信号和插槽进行通信。因此,如果workerobject需要开始工作,则必须通过信号触发。
看一下这个answer on a similar question,这是推荐的做法。
基本上,您将Qthread的已启动信号连接到workerobject starthandlingSSLrequest
。然后启动你的线程,如果它不是多线程的,你将调用starthandlingSSLrequest
对象。
每当用户想要你做某事时,你只需在主循环中触发信号,所有连接的插槽将在以后被驱逐。
答案 1 :(得分:0)
除非您正在创建一个将要处理大量并发请求的服务器,否则我建议您不要在这种情况下使用线程。 Qt的网络类是异步的,因此您可以很容易地继续在主线程上使用它们。看看QSsLSocket,它来自QTcpSocket。有一些如何使用Ssl创建服务器和客户端以及如何使用它们的示例。