Отключенная тень заголовка QGroupBox (она же гравировка)

Внимательно посмотрите на отключенный заголовок QGroupBox (см. Прикрепленное изображение).

отключен QGroupBox

Под буквами заголовка вы заметите крошечную белую 1-пиксельную тень.

Это едва заметно на таблице стилей по умолчанию, но это может быть намного более раздражающим, если вы установите темный фон и цвет текста.

Что я могу сделать, чтобы отключить эту тень или хотя бы изменить ее цвет?

2 ответа

Решение

Какой стиль вы используете? Это похоже на "основной" стиль Windows. Если вы хотите избавиться от тени текста, вы можете реализовать свой собственный стиль и изменить способ отображения текста для отключенных групповых блоков. Узнайте больше о QStyle и как создать собственный стиль здесь. Ссылка для Qt 5.1, но принцип тот же и для Qt 4.

Более простым способом было бы просто изменить палитру для QGroupBox объект. Изменить цвет, определенный по цветовой группе QPalette::Disabled и цветовая роль QPalette::Light любого цвета с альфа-каналом, установленным на 0, например QColor(0, 0, 0, 0), Это эффективно отключит тень текста. Тем не менее, он также отключит тень линий, так что это может быть не то, что вы хотите.

Я нашел решение:

К сожалению, вы не можете удалить отключенную тень текста (так называемое травление), но вы можете изменить ее цвет, используя грязный обходной путь:

Похоже, что эффект тени всегда берет свой цвет из ColorGroup "Disabled" и ColorRole "Light" текущей палитры. Итак, вы просто устанавливаете этот цвет на цвет фона вашего виджета:

QPalette p = myWidget->palette();
p.setColor(QPalette::Disabled, QPalette::Light, QColor(0,0,0)); <- place your widget bg color here
myWidget->setPalette(p);

Я нашел это решение здесь

Другие вопросы по тегам