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

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]