Как получить цвет фона QT-toolButton/pushButton с помощью C++
Соответствующие вопросы:
Как получить виджет фона QColor
QWidget::palette().color(QWidget::backgroundRole())
Существует как минимум 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);
и для 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);