【发布时间】:2021-07-28 20:17:50
【问题描述】:
我已经看到这个问题被反问了很多次——如何从子类 QThread 更新 GUI——但我实际上想反过来做。我有一个应用程序可以连续无限期地显示来自相机的提要,并且相机在单独的线程中运行。我使用来自 QThread 的信号在 GUI 中显示了摄像头馈送。相机控件位于主 GUI 窗口中,我希望能够将这些更新发送到已经运行的相机线程。最好的方法是什么?谢谢。
【问题讨论】:
我已经看到这个问题被反问了很多次——如何从子类 QThread 更新 GUI——但我实际上想反过来做。我有一个应用程序可以连续无限期地显示来自相机的提要,并且相机在单独的线程中运行。我使用来自 QThread 的信号在 GUI 中显示了摄像头馈送。相机控件位于主 GUI 窗口中,我希望能够将这些更新发送到已经运行的相机线程。最好的方法是什么?谢谢。
【问题讨论】:
如果您使用运行事件循环的默认QThread::run() 实现,那么您可以在类上创建一个槽并将其作为QueuedConnection 调用(这应该会自动发生)。
否则,您将需要使用标准线程同步原语,例如 QMutex 来安全地从两个线程访问相同的数据。
【讨论】: