我正在研究多线程图像处理应用程序。我添加了一个基于QT的GUI,用于更改一些参数,我必须经常尝试,而不是每次启动程序时都从设置文件中加载它们或者必须输入它们。我也想要GUI显示每个线程的一些基本信息,以便我可以监控它们。我目前有线程安全的方法在设置的图像处理线程之间传递信息,我想要一种方法从QT线程大约每秒轮询一些这些信息,所以我可以在UI上显示一些反馈。
我的要求是我不想将QT特定代码合并到图像处理线程中以更新UI。我宁愿让UI线程轮询我当前用来在线程之间传递信息的方法。我希望我的代码库的图像处理部分独立,而不必依赖QT来运行。如何轮询全局可用功能以更新QT UI?
答案 0 :(得分:8)
QTimer是你的朋友。
QTimer *timer = new QTimer(this);
connect(timer, SIGNAL(timeout()), &someQObjectDerivedClassInstance, SLOT(doYourThing()));
timer->start(1000);
或者在Qt5和C ++ 11中,您可以直接连接到lambda。虽然使用插槽可以确保在连接到另一个线程中的对象时获得排队连接。