Aussehen der HeaderView einer QTableView ändern?

Alles rund um die Programmierung mit Qt
Antworten
tsteinmaurer
Beiträge: 18
Registriert: 13. Juli 2007 10:15

Aussehen der HeaderView einer QTableView ändern?

Beitrag von tsteinmaurer »

Hallo,

ich bin ziemlich neu in QT und kämpfe mich durch bestimmte Dinge, die vielleicht für andere leicht lösbar sind. ;-)

Ich würde gerne das Aussehen einer QTableView ändern, nämlich die Hintergrundfarbe soll schwarz sein, die Schriftfarbe weiß. Dazu hab ich mal von QTableView abgeleitet und eine Methode geschrieben, die mir die Hintergrundfarbe und die Schriftfarbe setzt. Bsp:

[code]

void QLWETableView::initLayout()
{
QPalette newPalette = palette();

QBrush baseBrush = newPalette.base();
QBrush textBrush = newPalette.text();

baseBrush.setColor("black");
textBrush.setColor("white");

newPalette.setBrush(QPalette::Base, baseBrush);
newPalette.setBrush(QPalette::Text, textBrush);

setPalette(newPalette);
}

[/code]

Das klappt auch so weit. Jetzt will ich etwas ähnliches auch für den Header machen. D.h. ich will den Bereich mit den Spaltennamen ebenfalls mit schwarzer Hintergrundfarbe und weißer Schrift machen, damit sich das Aussehen zum Tabelleninhalt nicht unterscheidet.

Hat jemand eine Idee?


Danke,
Thomas
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Es sollte auch ohne Ableitung funktionieren, die Palette von 'außerhalb' für den viewport(), den verticalHeader() und horizontalHeader() zu setzen.
tsteinmaurer
Beiträge: 18
Registriert: 13. Juli 2007 10:15

Beitrag von tsteinmaurer »

Hallo,

wenn ich etwas ähnliches mit horizontalHeader() versuche, dann macht das keinen Unterschied. z.B.:

[code]
QPalette headerPalette = horizontalHeader()->palette();
QBrush headerBaseBrush = headerPalette.base();
QBrush headerTextBrush = headerPalette.text();

headerBaseBrush.setColor(Qt::black);
headerTextBrush.setColor(Qt::white);

headerPalette.setBrush(QPalette::Base, headerBaseBrush);
headerPalette.setBrush(QPalette::Text, headerTextBrush);

horizontalHeader()->setPalette(headerPalette);
[/code]

Das ändert leider nichts am Aussehen des Headers.

Noch eine Idee?

Thomas
NoobSaibot
Beiträge: 99
Registriert: 27. Januar 2005 15:55

Beitrag von NoobSaibot »

falls deine Qt Version CSS unterstützt versuch das mal

Code: Alles auswählen

QHeaderView::section {
	background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, stop:0 #616161, stop: 0.5 #505050, stop: 0.6 #434343, stop:1 #656565);
	color: white;
	padding-left: 4px;
	border: 1px solid #6c6c6c;
}
Antworten