gpt4 book ai didi

qt - 当我们不在 Qt 4.8x 中继承 QThread 时,必须如何使用 QEventLoop?

转载 作者:行者123 更新时间:2023-12-04 04:44:15 27 4
gpt4 key购买 nike

我读过有两种使用 QThread 的方法。
如果我有一个继承 QObject 的 Worker 类(如 http://mayaposch.wordpress.com/2011/11/01/how-to-really-truly-use-qthreads-the-full-explanation/ ),那么我应该如何创建和管理本地 QEventLoop 以处理信号/插槽?我不想有内存泄漏。
如何在 http://codethis.wordpress.com/2011/04/04/using-qthread-without-subclassing/ 中描述的工作线程中创建 QNetworkAccessManager ?

最佳答案

如果你没有子类化 QThread ,它有自己的事件循环 (Fixed QThread documentation of Qt 5, also appliccable for Qt 4) :

By default, run() starts the event loop by calling exec() and runs a Qt event loop inside the thread.



使用信号和槽可以轻松管理工作人员完成的工作:

(...) you are free to connect the Worker's slots to any signal, from any object, in any thread. It is safe to connect signals and slots across different threads, thanks to a mechanism called queued connections.



这意味着您通常不需要自己关心任何事件循环(除非您需要特殊行为)。只需连接线程的 started向您的工作对象的任何插槽发出信号,并确保您设置某种删除链:工作人员发出导致线程停止和删除的信号,或者反过来 - 两种方式都可以工作,具体取决于您的情况.

关于qt - 当我们不在 Qt 4.8x 中继承 QThread 时,必须如何使用 QEventLoop?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18437978/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com