Получить 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 ответ

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

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

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

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

Например:

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

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

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

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