Если задан глобальный стиль для приложения, и в нём есть раскраска какого-то конкретного виджета по наличию в нём определённого property, то при смене значения этого property виджет никак не реагирует. Например:
CSS
...
QLineEdit
{
background-color: white;
}
QLineEdit[cool="true"]
{
background-color: red;
}
...
В коде:
C++ (Qt)
void Class::slotStyleOnReturnPress()
{
ui->lineEdit->setProperty("cool", true); // сделаем его красным
// WTF???
}
Решения:
1) Чтобы заставить виджет пересчитать глобальный стиль для себя, нужно задать ему фиктивный пустой стиль:
C++ (Qt)
void Class::slotStyleOnReturnPress()
{
ui->lineEdit->setProperty("cool", true);
ui->lineEdit->setStyleSheet("/* */");
}
2) или принудительный пересчёт графики
C++ (Qt)
void Class::slotStyleOnReturnPress()
{
ui->lineEdit->style()->unpolish(ui->lineEdit);
ui->lineEdit->style()->polish(ui->lineEdit);
ui->lineEdit->update();
}