Подтвердить что ты не робот

Действительно ли стили таблицы Qt обрабатывают свойства _dynamic_?

Являются ли динамические свойства Qt настолько динамичными с таблицами стилей?

У меня есть основной пример из таблиц стилей и динамических свойств:

/*stylesheet:*/
*[field_mandatory="true"] { background-color: "yellow";}

И у меня это происходит во время выполнения где-то в коде:

/*code:*/
myWidget->setProperty("field_mandatory", field->isFilled() );

В пользовательском интерфейсе ничего не меняется, когда это свойство изменяется во время выполнения.

Есть ли у кого-нибудь идеи, что нужно сделать, чтобы обновить движок стилей Qt при изменении свойств или даже справиться с этими случаями?

Btw. Я использую Qt 4.4

4b9b3361

Ответ 1

Я нашел быстрый, хотя и немного хакерский способ обновления стиля виджета.

myWidget->style()->unpolish(myWidget);
myWidget->ensurePolished();

Выполнение этого после изменения свойств сохраняет корреляцию между данными свойств и пользовательским интерфейсом.

Ответ 2

Qt имеет следующую рекомендацию в FAQ:

style()->unpolish(theWidget);
style()->polish(theWidget);

Они также говорят, что вы можете reset таблицу стилей сделать следующее, но это дороже:

setStyleSheet(styleSheet());

Ответ 3

Следующее работает для меня, чтобы обеспечить правильный рестайлинг виджета:

myWidget->setStyle(QApplication::style())

Принуждение перерасчета таблиц стилей, предложенных mdcl, не помогло мне. Я использую Qt 4.5.3.

Ответ 4

Я тоже пробовал это, и когда я нашел следующий текст в документации, я сдался. См. Синтаксис таблицы стилей:

Внимание: если значение Qt изменения свойств после таблицы стилей, было бы необходимо, чтобы принудительно переформатируйте таблицу стилей. Один способ достижения этого - и снова установите его.