正如标题所述,我正在尝试通过线程连续更新 GUI 表单元素,但表单似乎仍然很忙。我无法理解。这就是我的处理方式。
connect(this,SIGNAL(SIGUpdateForm),this,SLOT(MyUpdateMehtod));
现在每当需要更新表单时,我只需执行以下操作。我在新线程中启动一个方法。然后新线程触发上述信号。
boost::thread t(&SomeClass::SomeMethod(),this);
现在一旦 someMethod 在这里启动就是我要做的
void SomeMethod()
{
SIGUpdateForm(); //Launch the signal that will update the form
}
SIGUpdateForm 然后调用 MyUpdateMehtod() 但是因为信号(无论是排队还是直接不启动任何线程,因此看起来表单被挂起。)但这让我感到困惑,因为信号本身是从独立线程调用的,所以为什么是表单绞刑 ?我能做些什么来完成这项工作?