[Qt4.1] Hintergrundfarbe von QGroupBox

Alles rund um die Programmierung mit Qt
Antworten
heikob
Beiträge: 81
Registriert: 23. März 2005 23:20

[Qt4.1] Hintergrundfarbe von QGroupBox

Beitrag von heikob »

Hallo,

ich versuche im Moment, die Hintergrundfarbe einer QGroupBox zu verändern. Dabei gehe ich folgendermaßen vor:

In einer Funktion ändere ich die Farbe von QPalette::Window auf die entsprechende Farbe.

Code: Alles auswählen

void siv::setWidgetBackgroundColor(QWidget * widget, const QColor & color)
{
	if (color.isValid())
	{
		QPalette palette( widget->palette() );
		palette.setColor( QPalette::Window, color );
		widget->setPalette( palette );
		widget->repaint();
	}
}
Diese Funktion rufe ich nach der Erstellung der Groupbox auf.

Code: Alles auswählen

controlGroupBox = new QGroupBox;
setWidgetBackgroundColor(controlGroupBox,QColor(255,0,0));
Eigentlich ist zu erwarten, dass die Groupbox anschließend rot ist, aber stattdessen bekomme ich das:
Bild
Oben geht die Groupbox noch weiter. Ich wollte es hier nicht übertreiben. :wink:

Wieso ist die Groupbox nicht komplett, bis auf die Widgets versteht sich, ausgefüllt? Was mache ich schon wieder falsch? Ich werde das Farbkonzeot von Qt4 wohl nie mehr verstehen. Es wäre schön, wenn mir mal wieder jemand auf die Sprünge helfen würde. Vielen Dank

heikob
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Ab 4.1 muss ein weitere Paramter auf true gestellt werden und zwar setAutoFillBackground

Die Funktion, die du da hast, ist hier aus dem Forum und ist noch von der Qt Version 4.0.x.
heikob
Beiträge: 81
Registriert: 23. März 2005 23:20

Beitrag von heikob »

Da hast du Recht. Die Funktion habe ich wirklich vor ca. einem Jahr hier aus dem Forum gefischt und finde sie äußerst praktisch. Ich nutze ihn zum Beispiel um ButtonText einzufärben. Klappt prima.

Aber zurück zum Problem. Da ich ja, bevor ich Frage, schon mal im Forum schaue, ob mein oder ein verwandtes Problem bereits diskutiert wurde, bin ich auch über setAutoFillBackground gestolpert und ausprobiert. Ich hatte es nur vergessen zu erwähnen. Hier also die geänderte Fassung der FUnktion:

Code: Alles auswählen

void siv::setWidgetBackgroundColor(QWidget * widget, const QColor & color)
{
	if (color.isValid())
	{
		QPalette palette( widget->palette() );
		palette.setColor( QPalette::Window, color );
		widget->setAutoFillBackground(true);
		widget->setPalette( palette );
		widget->repaint();
	}
}
Und hier das Ergebnis:
Bild
Wie man sieht, wurde der Hintergrund der Groupbox lediglich heller. Also das alleine kann es nicht gewesen sein. Hast du vielleicht noch weitere Ideen?[/list]
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Die Palette muß natürlich Palette::Background sein.
heikob
Beiträge: 81
Registriert: 23. März 2005 23:20

Beitrag von heikob »

Daran liegt es definitiv nicht. Denn in der Doku unter QPalette steht:
QPalette::Background - This value is obsolete. Use Window instead.
Oder habe ich falsch verstanden? Aber ein Test brachte auch keine Veränderung. Ich kümmere mich im Moment erst einmal um wichtigere Teile des Programms. Wenn jemand noch etwas einfallen sollte, wäre ich dankbar.

heikob
FlorianBecker
Beiträge: 1213
Registriert: 2. Dezember 2004 10:54
Kontaktdaten:

Beitrag von FlorianBecker »

Also ich habe das ganze im Designer einmal mit Palette ändern gemacht. Und es geht. Es fehlt nix - geht.

Aber da du das mit Window ja wusstest, wieso wusstest du das mit setAutoFillBackground nicht? Guck in die Doku, oder frag Trolltech, oder poste mal deinen gesamten Code. Ich denke, du hast so was wie setBackgroundRole oder so was gesetzt.

Also poste mal bitte die gesamte Klasse.
Antworten