Seite 1 von 1

Aussehen der HeaderView einer QTableView ändern?

Verfasst: 13. Juli 2007 10:23
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

Verfasst: 13. Juli 2007 12:18
von upsala
Es sollte auch ohne Ableitung funktionieren, die Palette von 'außerhalb' für den viewport(), den verticalHeader() und horizontalHeader() zu setzen.

Verfasst: 13. Juli 2007 13:00
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

Verfasst: 13. Juli 2007 20:30
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;
}