Обновление ObjectName виджета не обновляет стиль автоматически - PullRequest
8 голосов
/ 30 января 2012

В моем приложении таблица стилей для всего приложения берется из файла ресурсов, загруженного в приложение.

У меня есть две таблицы стилей, определенные для QListWidget:

QListWidget#Good{
..some color properties
}

QListWidget#Bad {
..soem different color properties
}

Inформа, имя объекта моего QListWidget - "Хорошо", поэтому он придерживается стиля #good.Во время выполнения у меня есть случай, когда я хочу установить «SetObjectName» на «Плохо» и сразу изменить стиль в пользовательском интерфейсе.

Я заметил две вещи:

  1. просто вызов "SetObjectName (" Bad ");"не меняет стиль по сравнению с методами ...
  2. Единственное время "SetObjectName (" Bad ");"works, если вызывается из конструктора Widget, содержащего QListWidget.

Очевидно, что мне не хватает некоторой фазы "стиля обновления".Обратите внимание, что у меня не может быть "setStyleSheet" в коде, он должен быть из файла QSS.

Чего мне не хватает?

1 Ответ

12 голосов
/ 30 января 2012

Получил это решено.Вызов:

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

На моем виджете после изменения objectName (setObjectName) сделал свое дело.

...