【发布时间】:2014-03-08 06:26:59
【问题描述】:
我正在尝试更改 Qt5 中 QAbstractButton(QPushButton 或 QCheckBox)的背景颜色并且运气为零。
这无济于事:
pButton->setAutoFillBackground(true);
QPalette palette = pButton->palette();
palette.setColor(QPalette::Window, QColor(Qt::blue));
pButton->setPalette(palette);
pButton->show();
如果我尝试更改样式表:
pButton->setStyleSheet("background-color: rgb(255,255,0);");
然后 Qt 举起双手,画了一个看起来像块状的按钮。
有一个标题为“How to change the background color of QWidget”的页面,但它只是谈论这两种方法。
还有一个页面“Qt Style Sheets Examples”暗示如果要改变背景颜色,就得接管绘制按钮的方方面面,这似乎有点矫枉过正。
我需要它在 Mac、Windows 和 Ubuntu Linux 上运行,如果我必须手动绘制按钮的所有内容 3 次(每个平台一次),这真的不是一件快乐的事情。
我是否遗漏了一些明显的东西?
附言“背景颜色”是指按钮周围的区域,而不是按钮表面文字下方的颜色。
【问题讨论】:
-
你解决过这个问题吗?
-
我没有...似乎如果您使用默认小部件,Qt 会使用 QStyle “绘制”它们,这很好,因为您的小部件在所有不同平台上都显示为原生,但并非如此很好,因为定制不再可能。您也许可以创建自己的 QStyle 派生类并以某种方式搭载 QStyle 本身,但我们决定在我们的 UI 上采用完全不同的方向,绕过这个限制。
标签: qt qt5 qpushbutton qcheckbox