2016-04-08 2 views
1

Как я могу получить заданный цвет фона QPushButton?Получить QPushButton прессованный цвет фона

if (isDown()) 
    _BGColor = <pressed background color>; // how to get this??? 
else 
    _BGColor = palette().color(QPalette::Background); // this is to get the idle backcolor 

Заранее благодарен!

+1

Добро пожаловать в Stackoverflow. Не могли бы вы объяснить, что вы пытаетесь сделать? Кажется, что получение этого цвета - не очень хорошая идея. Может быть, мы сможем найти лучшее решение вашей первоначальной проблемы? – Ilya

+0

У меня есть подкласс QPushButton, когда кнопка длинным нажата, я хочу нарисовать круг с обратным цветом фона, а внутри - контрольный символ с цветом фона. Другим вариантом для меня является стирание некоторой части круга (создание прозрачной части) для создания галочки. – Toots

+0

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

ответ

1

Очень сложно (если не невозможно) найти способ получить задний цвет кнопки при нажатии, потому что это зависит от стиля, и не гарантируется, что стиль соответствует палитре.

Однако я предлагаю два различных подхода:

  1. Вы можете установить у вас есть цвет фона с использованием таблиц стилей (простые) или осуществлять покраску кнопки самостоятельно, используя стили или реализовав paintEvent(). См. Customizing QPushButton

  2. Чтобы нарисовать над кнопкой обратный цвет, вы можете установить режим композиции для художника, чтобы получить обратный цвет.

Например:

painter.setPen(QColor(255, 255, 255)); 
painter.setCompositionMode(QPainter::RasterOp_SourceAndNotDestination); 

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

Смотрите QPainter::CompositionMode

Смежные вопросы