0

在我的代码中,我有以下更新 qlabel 的函数。qlabel 的更新非常频繁。代码是

void foo::someMethod(std:atring a)
{
     {//begin
     boost::lock_guard<boost::mutex> lock(mutex_label);
     frm->mylabel->setText(a.c_str());
     }//end lock
}

然后过了一会儿我得到一个断言错误:

assert failure in documentRect: "document rect called for label that is not a text label! , file widgets\qlabel.cpp

有什么建议可能导致它吗?有时也从未显示该值。我必须移动表单才能更新值

4

1 回答 1

3

您不能从另一个线程触摸 GUI。再多的互斥体也无济于事,Qt 不支持。正确的方法是通过信号和插槽来做到这一点。

您可以阅读更多关于跨线程的 Qt 信号,一个是 GUI 线程?.

于 2013-04-17T16:00:49.127 回答