Seite 1 von 1
QTableWidget: Wie Text in HorizontalHeaders senkrecht ?
Verfasst: 15. April 2008 21:41
von Zonk
Hallo,
ich habe folgendes Problem:
ich habe ein QTableWidget

tem-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
Verfasst: 15. April 2008 22:48
von dhcase
Verfasst: 15. April 2008 23:49
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
Verfasst: 16. April 2008 07:27
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.
Verfasst: 16. April 2008 09:03
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
Verfasst: 16. April 2008 20:21
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);
Verfasst: 21. April 2008 18:45
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
Verfasst: 21. April 2008 20:26
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().