4

我正在开发一个多线程图像处理应用程序。我在基于 QT 的 GUI 上添加了一些参数,目的是更改一些我必须进行大量试验的参数,而不是每次启动程序或必须输入它们时从设置文件中加载它们。我也想要GUI 显示每个线程的一些基本信息,以便我可以监控它们。我目前有在设置的图像处理线程之间传递信息的线程安全方法,我想要一种大约每秒从 QT 线程轮询一些信息的方法,以便我可以在 UI 上显示一些反馈。

我的要求是我不想将特定于 QT 的代码合并到图像处理线程中来更新 UI。我宁愿让 UI 线程轮询我当前用来在线程之间传递信息的方法。我希望我的代码库的图像处理部分能够独立运行,而不必依赖 QT 来运行。我将如何轮询全局可用的函数来更新 QT UI?

4

1 回答 1

8

QTimer是你的朋友。

QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), &someQObjectDerivedClassInstance, SLOT(doYourThing()));
timer->start(1000);

或者在 Qt5 和 C++11 中,您可以直接连接到 lambda。尽管使用插槽将确保您获得排队的连接,以防您连接到另一个线程中的对象。

于 2013-03-21T19:54:57.683 回答