更新Qlabel文档矩形,调用不是文本标签的标签。为什么?

时间:2013-04-17 13:48:51

标签: c++ qt

在我的代码中,我有以下更新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

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

1 个答案:

答案 0 :(得分:3)

您无法从其他线程触摸GUI。没有多少互斥量会对此有所帮助,Qt不支持这一点。正确的方法是通过信号和插槽来做到这一点。

您可以在Qt signaling across threads, one is GUI thread?了解更多信息。