how to change QCheckBox text label color in Qt?

2019-01-19 21:06发布

问题:

I'm unable to change the color of Qcheckbox in QT, can somebody help me with code to change color of check box text label. I have tried Qpalette.. And im using QT4.7.4 version..

回答1:

You could use stylesheets:

checkBox->setStylesheet("QCheckBox { color: red }");

For more details check the style sheets in Qt Reference and the stylesheets documentation



回答2:

This works for me:

QPalette p = myCheckBox->palette();
p.setColor(QPalette::Active, QPalette::WindowText, green);
myCheckBox->setPalette(p);


回答3:

Looks like for some widgets you have to force using non-system "widget-engine". For checkbox it can be done by setting borders to none. So checkbox's style looks like:

QCheckBox {
   border: none;
   color: white;
}

Similar behavior is required by other widgets. Some style-properties do not disable native look. For example QPushButton (http://doc.qt.io/qt-4.8/stylesheet-reference.html)



回答4:

I ran into this problem using various versions of Qt5 (5.2, 5.4). To do it with style sheets I had to use the Pseudo-States properties: http://doc.qt.io/qt-4.8/stylesheet-reference.html#list-of-pseudo-states

Example:

myCheckbox->setStyleSheet("QCheckBox:unchecked{ color: red; }QCheckBox:checked{ color: red; }");

Setting both states changed the colors for me. It seems there are some oddities like this in the stylesheet and palette system so keep your eyes out for them and try a few different things (i.e. selectors, pseudo-states, etc.)