QTableWidget: Wie Text in HorizontalHeaders senkrecht ?

Alles rund um die Programmierung mit Qt
Antworten
Zonk
Beiträge: 51
Registriert: 17. September 2006 15:28
Kontaktdaten:

QTableWidget: Wie Text in HorizontalHeaders senkrecht ?

Beitrag von Zonk »

Hallo,

ich habe folgendes Problem:

ich habe ein QTableWidget (Item-based) und möchte dafür sowohl horizontale als auch vertikale Header nutzen.

eine einen sollen normalen waagrechten Text haben, die Header der Spalten sollen jedoch senkrechte Beschriftung haben.

Ist dies möglich?

Meine Ansätzen:
1. Text-Orientation in QTableWidgetItem: nicht auffindbar
2. Anstelle der Header in der obersten Tabellenzeile QLabel als Cell-Widgets einbinden. -> Text auf einem Label senkrecht orientieren: nicht auffindbar.

a) Bin ich der einzige der dieses Problem hat,
b) Oder ist dieser Schalter nicht dopkumentiert
c) oder hat Qt mit so einer (doch recht einfachen Aufgabe finde ich) wirklich so derbe Probleme


Danke Torben
Zuletzt geändert von Zonk am 16. April 2008 09:04, insgesamt 1-mal geändert.
dhcase
Beiträge: 132
Registriert: 10. Juni 2006 20:38

Beitrag von dhcase »

Zonk
Beiträge: 51
Registriert: 17. September 2006 15:28
Kontaktdaten:

Beitrag von Zonk »

Danke für die Antwort,

Leider funktionieren TableViews nur Modelbased, und ich hab es ItemBasend realisiert (mangels Verständnis des Model-Based)

Torben
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Mann, war das grottig zu lesen. Nächstes Mal ein bißchen mehr Sorgfalt bei der Rechtschreibung.
http://doc.trolltech.com/4.3/qt.html#AlignmentFlag-enum bietet alles. Bei den vertikalen Header muss halt Buchstabe für Buchstabe rein.
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
Zonk
Beiträge: 51
Registriert: 17. September 2006 15:28
Kontaktdaten:

Beitrag von Zonk »

Hallo,

Sorry es war spät.

Nein, mittels der Alignment-Flags kann ich den Text nur ausrichten, aber nicht orientieren.


Jeden Buchstaben in eigene Zeile zu lesen ist auch keine Lösung. So mag zwar manche Hochhauswerbung geschrieben sein, aber es ist halt dennoch keine senkrechte Orientierung. Jeder Buchstabe für sich ist ja weiterhin waagrecht orientiert.


Ich habe nun eine relativ umständliche Art realisiert:
Eine eigene Label-Klasse (abgeleitet von QLabel) überlädt den Painterevent und zentriert und rotiert ihn vor dem Schreiben.
Dieses Label wird dann in die Zellen der ersten Tabellenreihe als CellWidget eingebunden.

Danke Torben
dhcase
Beiträge: 132
Registriert: 10. Juni 2006 20:38

Beitrag von dhcase »

Zonk hat geschrieben:Danke für die Antwort,

Leider funktionieren TableViews nur Modelbased, und ich hab es ItemBasend realisiert (mangels Verständnis des Model-Based)

Torben
Ist doch egal, ein QTableWidget ist von QTableView abgeleitet und hat auch ein Model. Kannst ja mal folgendes probieren:

Code: Alles auswählen

QHeaderView * header = new QHeaderView(Qt::Vertical);
tableWidget->setHorizontalHeader(header);
Zonk
Beiträge: 51
Registriert: 17. September 2006 15:28
Kontaktdaten:

Beitrag von Zonk »

hmm klingt gut, aber das Ergebnis ist ein nicht angezeigter Header.

wie kann ich deinem header denn dann Daten geben?
mit "setHorizontalHeaderLabels(...); gehts ned..

vielen Dank, Torben
dhcase
Beiträge: 132
Registriert: 10. Juni 2006 20:38

Beitrag von dhcase »

Die Doku hilft...
http://doc.trolltech.com/4.3/qheaderview.html hat geschrieben:The header gets the data for each section from the model using the QAbstractItemModel::headerData() function. You can set the data by using QAbstractItemModel::setHeaderData().
Antworten