相关问题:
How to get widget background QColor Class<T> clazz = arrs[0].getClass();
T[] arr = (T[]) Array.newInstance(clazz.getComponentType(), <length of all passed arrays>);
至少有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
和pyQt,请参阅此处How to get the background color of a button or label (QPushButton, QLabel) in PyQt
答案 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);