2014-03-31 324 views
3

我發現了同樣的問題還有: how to change QCheckBox text label color in Qt?更改QCheckBox文本顏色

但不幸的是,它沒有一個爲我工作在Mac上。

在Linux和Windows上,默認情況下,QWidget(QLabel,QCheckBox,QRadioButton)的文本是白色的。 在Mac上,它是黑色的。不幸的是在我的屏幕上這個問題的原因與文本是不可讀的(我有黑色背景)..

我已經得到的QCheckBox類,所以在構造函數中您將獲得:

class MPUBLIC MythCheckBox: public QCheckBox 
{ 
    Q_OBJECT 

    public: 
    MythCheckBox(QWidget *parent = 0, const char *name = "MythCheckBox") 
     : QCheckBox(parent) 
    { 
     setObjectName(name); 
#ifdef Q_OS_MAC 
//  setStyleSheet("QCheckBox { color : white; }; QCheckBox::indicator { color:black; }"); 
     QPalette p = palette(); 
     p.setColor(QPalette::WindowText, Qt::white); 
     setPalette(p); 
#endif 
    }; 

如果我使用的樣式表所示:

setStyleSheet("QCheckBox { color : white; }; QCheckBox::indicator { color:black; }"); 

然後我的文字是白色的,因爲我想,但對號本身變得不可見...

如果我用第2種方法:

QPalette p = palette(); 
p.setColor(QPalette::WindowText, Qt::white); 
setPalette(p); 

複選框文本確實變成了白色,並且複選標記本身仍是黑色,它看起來像是有效的。 但是,如果我將焦點移至QCheckBox,文本將再次變爲黑色,並且它將永遠保持黑色。

我也試過:

QPalette p = palette(); 
p.setColor(QPalette::Active, QPalette::WindowText, Qt::white); 
p.setColor(QPalette::Inactive, QPalette::WindowText, Qt::white); 
setPalette(p); 

你要知道,我只得到在mac上這個怪異的行爲;如果我在Linux中嘗試相同的代碼(使用不同的顏色,如紅色),那麼所有的行爲都像我想要的那樣。

關於如何更改QCheckBox文本的顏色以及僅文本的任何想法?

+0

您可以嘗試指定必須使用新樣式表修改小部件的哪個部分。例如,如果您的複選框名稱爲MythCheckBox_0,則可以調用MythCheckBox_0.setStyleSheet(「#MythCheckBox_0 {color:white;}」);或者類似的東西。 – Ilya

+0

嘗試像你一樣的樣式表,但沒有重新定義QCheckBox :: indicator'setStyleSheet(「QCheckBox {color:white;}); css;' –

+0

QDesigner是否在你手邊?如果我遇到調色板問題顏色我使用它來簡單地玩弄顏色,看看是否解決了我的問題 – Bowdzone

回答

0

對於一些小部件,您必須禁用本機外觀(外觀)。例如QPushButton(http://doc.qt.io/qt-4.8/stylesheet-reference.html)。所以,對於複選框,您可以嘗試設置邊框。所以複選框的樣式如下:

QCheckBox { 
    border: none; 
    color: white; 
} 

適用於我。