У меня есть в одном из моих проектов QwtPlot, где я хочу настроить его цвета гармоничным образом - то есть, например, если цвет фона белый, ось должна быть черной и т. Д. Теперь я мог бы сделать это в " жестко запрограммированный способ »: каждый раз, когда цвет фона (эталона) изменяется, я смотрю на массив ранее определенных цветов для оси и устанавливаю данный цвет в массиве для этой оси. Но это совсем «не в моде» и хотелось бы более автоматизированного способа.
Обращение за помощью здесь Уве сказал мне использовать QwtPlot::setPalette(color)
, и он отлично работает сам по себе. Проблема в том, что QwtPlot является дочерним элементом серии виджетов на основе QWidget, цвета которых должны быть настроены в файле глобальной таблицы стилей, и я заметил, что когда таблица стилей для одного из этих виджетов настроена, это делает недействительным вызов QwtPlot на setPalette
. Это как если бы я должен был выбирать между ними: если я собираюсь использовать хотя бы один вызов setPalette
в данном виджете, то ни один из его родителей до основного виджета (QMainWindow в моем случае) не должен быть настроен с помощью система таблиц стилей. Кажется, это то, что говорится в этой части документации о setPalette
:
Предупреждение: не используйте эту функцию вместе с таблицами стилей Qt. (исходный код а>)
, но, похоже, это должно было иметь место только при использовании глобального вызова setPalette
.
У меня вопросы: есть ли способ решить эту проблему гармонично? Или мне нужно отказаться от системы таблиц стилей для этой части программного обеспечения и вместо этого использовать только палитры? Я попытался сделать конфигурацию таблицы стилей более «локализованной» - это попытка сказать системе: «эта конфигурация таблицы стилей действительна только для этого виджета; не сохраняйте ее для его дочерних виджетов», но безуспешно. Если это действительно возможно (и поэтому я, вероятно, выбрал неправильный синтаксис), я хотел бы знать.