Qt: Создание таблиц стилей из палитры - PullRequest
1 голос
/ 28 ноября 2011

У меня есть мультиплатформенное приложение Qt с настраиваемой палитрой, которую мы уже настроили для создания нужного нам вида. Палитра была установлена ​​на виджете верхнего уровня, и поэтому она была унаследована всеми дочерними виджетами.

Затем я хотел динамически изменить цвет текста некоторых QPushButtons. В поисках лучшего способа сделать это я начал читать о таблицах стилей, о которых раньше я не знал так много. Это казалось хорошим вариантом для изменения внешнего вида кнопок, и они сделали это. Однако, как только я установил цвет текста с помощью таблицы стилей, палитра виджетов перешла на значение по умолчанию. Вскоре стало очевидно, что таблицы стилей несовместимы с пользовательскими палитрами, и смешать их было невозможно. Большая часть информации, которую я нашел, предполагает, что следует использовать таблицы стилей, а не настраиваемые палитры, потому что, помимо прочего, таблицы стилей предлагают гарантии для разных платформ и выглядят, а смещение палитры - нет.

Исходя из этого, показалось хорошей идеей преобразовать мою пользовательскую палитру в таблицу стилей и установить ее на виджет верхнего уровня. Тогда я легко смогу изменить только некоторые параметры определенных дочерних виджетов, используя таблицы стилей. Проблема заключается в том, что палитра содержит множество заданных нами цветов, которые, по-видимому, не имеют эквивалента таблицы стилей. Например, Свет, Середина и Темнота. Не имея возможности установить эти цвета, я не смог создать тот же вид с использованием таблиц стилей, который был у меня ранее с настраиваемой палитрой.

Я хотел бы знать, существует ли простой способ преобразования настраиваемой палитры в таблицу стилей или есть какая-либо документация для описания эквивалентных настроек таблицы стилей для каждого цвета палитры. Я выполнил поиск в google, stackoverflow и справочных документах Qt, но потерпел неудачу.

Спасибо за любую информацию.

пс. Я решил свою первоначальную проблему путем динамического изменения атрибута ButtonText палитры для QPushButtons. Но я все равно предпочел бы использовать таблицы стилей, если это возможно, без изменения основного вида моего приложения.

1 Ответ

1 голос
/ 01 мая 2012

QColor.name() - шестнадцатеричная строка для этого цвета. Если вы хотите преобразовать в таблицу стилей, просто выполните все роли в вашей палитре и напечатайте .name() этого цвета. Затем вы можете найти соответствующие свойства таблицы стилей и псевдо-состояния, чтобы установить шестнадцатеричные цвета.

Одна вещь, которая может вас разочаровать при переходе от палитр к таблицам стилей, заключается в том, что CSS не позволяет использовать переменные, поэтому вам придется везде использовать шестнадцатеричную строку, а не просто определять именованные цвета и использовать их.

...