2017-03-20 64 views
0

我想更改QGroupBox的背景,但是我只想更改內部背景(每個QGroupBox標題下面的深灰色陰影),如下所示: enter image description here 我現在擁有的是更改QGroupBox的內容背景

QGroupBox { 
    background-color: red; 
    border: 3px dashed black; 
} 

這改變了整個QGroupBox像這樣的背景: enter image description here

是否有Qt的辦法只有改變「內部盒子」的背景,而不是整個容器?先謝謝你。

+0

您需要更改內部組框的樣式表;而不是我相信的那個。 – MateoConLechuga

+0

由於圖片有兩個分組框,因此圖片具有誤導性,但如果您將注意力集中在標題「完整性」和「子標準」上,您會看到它應該在哪裏着色(在標題下)以及它的着色位置(包括標題) –

+0

哦,你只需要在樣式表中添加'margin-top:1ex;'來爲標題留出空間。抱歉;我誤解了。 – MateoConLechuga

回答

1

我想這裏涉及到2個QGroupBox'es,因爲這是不是從真正明確的帖子。還是有一個組框和一些其他內部容器小部件?

在這兩種情況下,你應該能夠使用樣式表像下:

QGroupBox { 
    background-color: red; 
    margin-top:1em; 
} 
QGroupBox QGroupBox { 
    background-color: green; 
} 
QGroupBox::title { 
    subcontrol-origin: padding; 
    subcontrol-position: left top; 
    background: transparent; 
    margin-top: -2.5em; 
} 

這會給你以下結果:

Example

當然你可以通過更換內組框一個任意的部件。

+0

這就是我想的!負邊限可以解決問題。 –

0

你可以使用小部件的「setStyleSheet」函數來做到這一點。

獲取內部組框對象。並使用「setStyleSheet」函數設置背景顏色。

僞代碼:

QGroupBox *innerGBox = new QGroupBox(); 

innerGBox->setStyleSheet("background-color: red"); 

要了解更多關於設置樣式方案,請參閱以下鏈接。

http://doc.qt.io/qt-4.8/stylesheet-examples.html

1

你需要告訴Qt的一點關於你想要的那種風格,特別是利潤率。玩了一點點,此代碼應該給你想要的結果:

QGroupBox { 
    background-color: red; 
    border: 3px dashed black; 
    margin-top: 1ex; /* leave space at the top for the title */ 
} 

QGroupBox::title { 
    subcontrol-origin: margin; 
    padding: 0 3px; 
} 

看看在Stylesheet examples