2017-03-20 6 views
0

Ich mag den Hintergrund eines QGroupBox ändern, aber ich würde nur gerne den Inneren Hintergrund ändern (den dunkleren Grauton unter jedem QGroupBox Titel) wie hier gezeigt: enter image description here Was zur Zeit ich habe, iständern QGroupBox Inhalt Hintergrund

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

, die den Hintergrund des gesamten QGroupBox wie folgt ändert: enter image description here

gibt es eine Möglichkeit in Qt, um nur die „Innenfeld“ Hintergrund zu ändern, anstatt den gesamten Container? Vielen Dank im Voraus.

+0

Sie müssen das Stylesheet der inneren Gruppenbox ändern; nicht der äußere, glaube ich. – MateoConLechuga

+0

Das Bild ist irreführend, weil es zwei Gruppen enthält. Wenn Sie sich auf die Titel "Vollständigkeit" und "Unterkriterien" konzentrieren, sehen Sie, wo es farbig sein soll (unter dem Titel) und wo es farbig ist (inkl. Titel)) –

+0

Oh, du musst nur "margin-top: 1ex;" zum Stylesheet hinzufügen, um Platz für den Titel zu lassen. Es tut uns leid; Ich habe es falsch verstanden. – MateoConLechuga

Antwort

1

Ich denke, es sind 2 QGroupBox'es hier beteiligt, da diese von nicht wirklich klar ist Ihre Post. Oder gibt es eine Gruppenbox und ein anderes inneres Container-Widget?

In jedem Fall sollten Sie in der Lage sein Sheets verwenden wie folgt vor:

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; 
} 

Dies wird Ihnen folgendes Ergebnis:

Example

Sie können natürlich die innere Gruppenfeld ersetzen durch ein beliebiges Widget

+0

Das habe ich mir gedacht! Negative Ränder machen den Trick. –

0

Sie können es mit "setStyleSheet" -Funktion von Widgets tun.

Holen Sie sich das innere Gruppenfeldobjekt. Und legen Sie die Hintergrundfarbe mit der Funktion "setStyleSheet" fest.

Pseudo-Code:

QGroupBox *innerGBox = new QGroupBox(); 

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

Um mehr Informationen über Arten programmatische, siehe Link unten einstellen.

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

1

Sie müssen Qt sagen, ein wenig mehr über die Art der Stil, den Sie möchten, speziell die Margen. mit diesem Code um ein wenig zu spielen, sollten Sie die gewünschten Ergebnisse:

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; 
} 

einen Blick auf die Stylesheet examples

Nehmen