Как получить цвет фона QT-toolButton/pushButton с помощью C++

Соответствующие вопросы:

Существует как минимум 3 способа решения проблемы:

// 1st 
QColor color = ui->toolButton->palette().color(QWidget::backgroundRole());
// 2nd
QColor color = ui->toolButton->palette().background().color();
// 3rd
QColor color = colorSetting = ui->toolButton->palette().color(QPalette::Window);

Обновление: извините, я допустил некоторые ошибки, оба следующих способа работают хорошо.


Сырой вопрос:

я пытался

QColor color = ui->toolButton->palette().background().color();

а также

QColor color = colorSetting = ui->toolButton->palette().color(QPalette::Window);

оба получили QColor(ARGB 1, 0.941176, 0.941176, 0.941176), не тот цвет, который я хочу.

Цвет фона устанавливается путем редактирования mainwindow.uiизмените таблицу стилей toolButton на background-color: rgb(255, 170, 255);

изображение моего toolButton

и для pyQt, смотрите здесь Как получить цвет фона кнопки или метки (QPushButton, QLabel) в PyQt

1 ответ

Ваш связанный вопрос неверен относительно роли цвета, используемой кнопками. Ты ищешь QPalette::Button как твой ColorRole,

QColor color = ui->toolbutton->palette()->color(QPalette::Button);

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

Я подозреваю, что вы собираетесь изменить цвет фона. Ты можешь позвонить setBrush() установить это:

//Create a solid brush of the desired color
QBrush brush(someColor);
//Get a copy of the current palette to modify
QPalette pal = ui->toolbutton->palette();
//Set all of the color roles but Disabled to our desired color
pal.setBrush(QPalette::Normal, QPalette::Button, brush);
pal.setBrush(QPalette::Inactive, QPalette::Button, brush);
//And finally set the new palette
ui->toolbutton->setPalette(pal);
Другие вопросы по тегам