http://doc.qt.io/qt-5/threads-qobject.html#per-thread-event-loop
https://wiki.qt.io/Threads_Events_QObjects#Per-thread_event_loop
这两个链接谈论事件循环。请解释Qt中术语“事件循环”w.r.t线程的“含义”
答案 0 :(得分:0)
事件循环通常是由主线程运行的循环,用于接收源自系统的事件(例如GUI交互,网络事件,定时器......)或来自其他Qt组件(例如{{3 },...)。事件循环等待新事件到达事件队列,然后将它们从队列中取出并将它们发送到目标QObject
,在那里它们由被覆盖的QCoreApplication::postEvent()
处理(例如A {{1}通过发出QObject::event(QEvent*)
,......)来处理鼠标按下事件。
每线程事件循环是上述概念的概括。这使得通过引入QPushButton
的{{3}}概念来处理工作线程中的事件成为可能。线程亲和性是特定QObject
应处理其事件的线程(从QObject
调用QObject::event
的线程)。总体而言,这可用于在工作线程中运行异步代码(因为GUI代码应仅在主线程中运行)。例如,您可以运行许多异步套接字并使QObject
在单个工作线程中的某些指定的不活动时间之后断开这些套接字。每线程事件循环对于跨线程信号 - 时隙连接也是必不可少的,因为这种信号发射被转化为引擎盖下的QTimer
(将被传递到其目的地QMetaCallEvent
)。 / p>