Вопрос, как настроить Qt так, чтоб смена property таки отображалась стилями GSS?
У меня есть несколько однотипных кнопок на форме (наследники QPushButton). Задумалось мне выделить последнюю нажатую кнопку.
Задал переменную в классе:
QPushButton * bt_selected; // текущая выбранная кнопка стадии
в эвенте на клик по кнопке прописал (bt - указатель на нажатую кнопку):
if ( bt_selected )
bt_selected->setProperty("stage_active", false); // снимаем "избранность" с кнопки
( bt_selected = bt )->setProperty("stage_active", true);
в файле стиля:
QPushButton[stage_active="true"]
{
border: 1px solid palette(shadow);
}
и... ничего. Проперти меняются, выделение цветом бордюра отсутствует. Только если выставить проперти до первого show() формы - тогда они есть. Смена проперти в рантайме игнорится, стиль кнопок не меняется.
Ок, может быть, Qt не работает с динамическими свойствами? Определил свойство через Q_PROPERTY.
Q_PROPERTY(bool stage_active READ stage_active WRITE set_stage_active)
bool active;
public:
void set_stage_active(bool stage_active) { active = stage_active; }
int stage_active() const { return active; }
Ведь статику то движок перерисовывает, видно хотя бы по enabled! Реакция - ноль, стили не меняются.
Ок, смодил код нажатия на кнопку:
if ( bt_selected )
{
bt_selected->setProperty("stage_active", false); // снимаем "избранность" с кнопки
bt_selected->setStyleSheet(QString("*{}"));
}
( bt_selected = bt )->setProperty("stage_active", true);
bt_selected->setStyleSheet(QString("*{}"));
то есть тупо присваиваю абстрактный стиль кнопке. ЗАРАБОТАЛО, стили начали меняться. Но ведь это ДЕЙСТВИТЕЛЬНО ТУПОЕ РЕШЕНИЕ.
Как правильно решить вопрос?