qt setStylesheet不更新

时间:2018-07-31 20:16:15

标签: qt

如果文本框不是字段,我想更改它们的边框。因此,我进行了简单的检查,并检查了更改样式,如下所示:

if(!ui->TextBoxPhone->text().isEmpty() && !ui->TextBoxAddress->text().isEmpty()) {
    cout<<"Saved fine \n";
}
else {
    if(ui->TextBoxPhone->text().isEmpty()) {
        ui->TextBoxPhone->setStyleSheet("border: 2px solid red");
    }
    if(ui->TextBoxAddress->text().isEmpty()) {
        ui->TextBoxAddress->setStyleSheet("border: 2px solid red");
    }
}

所以我的问题是样式表不会自动更新。但是,如果我单击其他位置,它将更新。 我已经尝试使用

ui->TextBoxName->style()->unpolish(ui->TextBoxName);
ui->TextBoxName->style()->polish(ui->TextBoxName);
ui->TextBoxName->update();

没有运气。可能是macbook版吗?

这是一些屏幕截图:

您可以看到左边界为红色

当我单击另一个文本框时,它们都会更新并变成红色

2 个答案:

答案 0 :(得分:0)

为我工作:

myTextEdit->setStyleSheet("QTextEdit{background: transparent; border: none;}");

没有其他需要了。确保为样式表指定正确的类型。也许甚至可以解决:

myTextEdit->setStyleSheet("{background: transparent; border: none;}");

答案 1 :(得分:0)

解决了它……repaint()方法完成了工作;

 ui->TextBoxPhone->repaint();