如何使用C ++获取QT-toolButton / pushButton的背景颜色

时间:2016-04-30 15:02:34

标签: qt qtoolbutton

相关问题:

至少有3种方法可以解决问题:

QWidget::palette().color(QWidget::backgroundRole())

更新:抱歉,我犯了一些错误,以下两种方法都运行良好。

原始问题:

我试过了

// 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)设置背景颜色,更改toolButton的样式表 到mainwindow.ui

image of my toolButton

和pyQt,请参阅此处How to get the background color of a button or label (QPushButton, QLabel) in PyQt

1 个答案:

答案 0 :(得分:0)

关于按钮使用的颜色角色,您的链接问题不正确。您正在寻找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);