Как восстановить системное значение по умолчанию для свойства QSS? - PullRequest
0 голосов
/ 28 января 2019

Qt QSS распространяется на дочерние элементы. Если один родитель установит для своей таблицы стилей значение color: red, все его дочерние элементы будут применять эту таблицу стилей.Если вы установите явно QLabel {color: red}, то будут затронуты только дочерние элементы QLabel.

Можно перезаписать таблицу стилей для дочерних элементов, если они установили свои собственные значения children->setStyleSheet("color: blue");, но я не смог найти способ сбросасвойство к значению по умолчанию.Значение, установленное системой или Qt, если мы не установили это свойство в таблице стилей какого-либо родителя.

Как мне достичь чего-то вроде children->setStyleSheet("color: default");?

1 Ответ

0 голосов
/ 29 января 2019

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

Но AFAIK вы всегда можете установить таблицу стилей в пустую строку, например:

children->setStyleSheet("");

Иногда на некоторых платформах (в основномWindows) виджеты do сбрасывают свой внешний вид, но не получают всю системную стилизацию (в Windows они становятся серыми, загнутыми и тусклыми), не всегда, но случаются.

И если некоторыетаблицы стилей применяются динамически, и вы не получите результат, помогает «официальное обновление стиля», например:

someWidget->style()->unpolish(someWidget);
someWidget->style()->polish(someWidget);
...