我在网格中禁用了所有按钮,但对于某些人来说,我想更改背景颜色。我在尝试:
_fieldButtons[0][0]->setStyleSheet("color: blue; background-color: blue;");
哪里
QVector<QVector<QPushButton*> > _fieldButtons;
但是,这些按钮都被禁用,只有文本颜色被更改:
如何更改背景,而不是文字?谢谢!
更新 我认为它不起作用,因为按钮是平的。如何更改平面按钮颜色?
答案 0 :(得分:0)
两个选项:
将border: none;
添加到您的样式表。
将setAutoFillBackground(true)
与QPalette::Button
myButton->setFlat(true);
myButton->setAutoFillBackground(true);
QPalette pal = myButton->palette();
pal.setColor(QPalette::Button, QColor(Qt::blue));
myButton->setPalette(pal);
答案 1 :(得分:0)
试试这个:
`myButton-&GT;调用SetPalette(的QColor(&#34;#124e6b&#34));
//用手简单改变颜色......
//这要好得多,你会有更多的参数要改变......
答案 2 :(得分:-1)
这里有两个&#34; 伪状态&#34;在你的控制中。有关&#34; 伪州&#34;的列表请参阅以下链接。
http://doc.qt.io/qt-5/stylesheet-reference.html#list-of-pseudo-states
第一个&#34;伪状态&#34;是 - 持续
第二个&#34;伪状态&#34;是 - 已禁用
在这里你必须同时使用&#34; setStyleSheet&#34;来设置状态。
_fieldButtons[0][0]->setStyleSheet(":flat:disabled {background-color: blue; border: none;}");
寻找&#34;:hover:enabled&#34; (以下链接中的两个不同的&#34; 伪状态&#34;文档处理方式)以获得更好的想法。
http://doc.qt.io/qt-4.8/stylesheet-syntax.html
要理解为什么我们必须为border:none
提供QPushButton
,请在此答案的第一个超链接中查找以下信息。
&#34;警告:如果您只在QPushButton上设置背景颜色,除非您将border属性设置为某个值,否则背景可能不会出现。这是因为,默认情况下,QPushButton绘制一个与背景颜色完全重叠的原生边框。&#34;