在我的代码中,我有以下更新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
有什么建议可能导致它吗?有时也从未显示该值。我必须移动要更新的值的表单
答案 0 :(得分:3)
您无法从其他线程触摸GUI。没有多少互斥量会对此有所帮助,Qt不支持这一点。正确的方法是通过信号和插槽来做到这一点。