Qt更新qlabels背景色

Qt更新qlabels背景色,qt,background-color,qlabel,Qt,Background Color,Qlabel,我有一个二叉树实现,我正在绘制QLabel,上面的数字表示树的节点。我想做的是,当我遍历树时,我想在每个节点上更改它们的背景色。但我的工作失败了:/这是我的代码。请告诉我该怎么办 void Node::ChangeColor() { QPalette pal; pal.setColor( lbl->backgroundRole(), QColor(255,0,0) ); // change the color lbl->setPalette(pal);

我有一个二叉树实现,我正在绘制QLabel,上面的数字表示树的节点。我想做的是,当我遍历树时,我想在每个节点上更改它们的背景色。但我的工作失败了:/这是我的代码。请告诉我该怎么办

void Node::ChangeColor()
{ 
    QPalette pal;
    pal.setColor( lbl->backgroundRole(), QColor(255,0,0) ); // change the color
    lbl->setPalette(pal);
    lbl->setAutoFillBackground(true);
    lbl->update();
    QThread::sleep(1);
    pal.setColor( lbl->backgroundRole(), QColor(255,255,0) ); // change it back 
    lbl->setPalette(pal);
    lbl->setAutoFillBackground(true);
    lbl->update();
}
我也使用了样式表方法,但我也无法使其工作:/

void Node::ChangeColor()
{ 
    QPalette pal;
    pal.setColor( lbl->backgroundRole(), QColor(255,0,0) ); // change the color
    lbl->setPalette(pal);
    lbl->setAutoFillBackground(true);
    lbl->repaint();
    QThread::sleep(1);
    pal.setColor( lbl->backgroundRole(), QColor(255,255,0) ); // change it back 
    lbl->setPalette(pal);
    lbl->setAutoFillBackground(true);
    lbl->repaint();
}
通过将更新更改为重新绘制标签的方法,我解决了这个问题