Qt / C ++ - 设置禁用按钮的背景?

时间:2017-04-06 13:51:36

标签: c++ qt

我在网格中禁用了所有按钮,但对于某些人来说,我想更改背景颜色。我在尝试:

_fieldButtons[0][0]->setStyleSheet("color: blue; background-color: blue;");

哪里

QVector<QVector<QPushButton*> > _fieldButtons;

但是,这些按钮都被禁用,只有文本颜色被更改:

enter image description here

如何更改背景,而不是文字?谢谢!

更新 我认为它不起作用,因为按钮是平的。如何更改平面按钮颜色?

3 个答案:

答案 0 :(得分:0)

两个选项:

  1. border: none;添加到您的样式表。

  2. setAutoFillBackground(true)QPalette::Button

    结合使用
    myButton->setFlat(true);
    myButton->setAutoFillBackground(true);
    QPalette pal = myButton->palette();
    pal.setColor(QPalette::Button, QColor(Qt::blue));
    myButton->setPalette(pal);
    
  3. http://doc.qt.io/qt-5/qpushbutton.html#flat-prop

答案 1 :(得分:0)

试试这个:

`myButton-&GT;调用SetPalette(的QColor(&#34;#124e6b&#34));

//用手简单改变颜色......

  • 或U可以这样做......
  • 小部件推送RB上的
  • (右按钮) - &gt;改变样式表....
  • enter image description here

//这要好得多,你会有更多的参数要改变......

答案 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;