【发布时间】:2013-11-05 22:36:13
【问题描述】:
我有一个 QTimer 用于执行 OpenCV 代码并每 20 毫秒更改 QLabel 中的图像,但我想更自然地运行此 OpenCV 代码而不依赖于计时器。
相反,我希望有一个处理用户输入的主线程和另一个使用 OpenCV 处理图像的线程,我找不到一种线程安全的方法来从另一个线程中更改一个线程中的 QLabel 图像(像素图)线程,有人可以描述这个过程,也许给一些代码示例?我还想知道使用 QThread 的优缺点,因为它是免费的平台,听起来是用户级线程,而不是通常运行更流畅的系统级。
【问题讨论】:
-
您可以将信号从工作线程发送到将更新标签内容的主线程。
-
@vahancho 你能给我一些例子或链接吗?
-
如果我记得从一个单独的线程正确更新 UI,而不是在 Qt 下无法正常工作。不过,信号和槽是线程间通信的一种安全方式。
-
使用 QThread 的一个很好的起点是阅读这篇文章:mayaposch.wordpress.com/2011/11/01/…
标签: c++ multithreading qt qthread qlabel