Seite 1 von 1

subclassing QHeaderView

Verfasst: 17. Mai 2006 19:34
von chemstar
Hallo,

in meinem Projekt muss ich einen Taabellenheader erstellen der die Texteinträge -90° gedreht darstellt.
Möchte gern das QHeaderVier ableiten, jedoch nach einigen Versuchen komme ich nicht weiter.
Hat jemand was ähnliches gemacht? Wäre dankbar für jede Hilfe.

Gruß

miro

Verfasst: 18. Mai 2006 07:18
von macman
Womit kommst Du nicht weiter, mit dem ableiten oder mit dem Text drehen?

Verfasst: 18. Mai 2006 10:06
von chemstar
also ich habe mir die QHeaderView::paintSection(QPainter* painter, const QRect& rect, int logicalIndex) const vorgenommen.

Dann wird folgendes gemacht:

QRect r = rect;
int newX, newY, newRot;
newX = r.x();
newY = r.y() + r.height();
newRot = -90;
r.setRect(0, 0, r.height(), r.width());
QMatrix m;
m.translate(0, newY);
m.rotate(newRot);
painter->setMatrix(m, false);

Es handelt sich dabei um den vertikalen Header. Der erste Eintrag wird ja auch richtig dargestellt, aber die Folgenden nicht. Die werden in der unteren rechten Ecke des Anfangselements gezeichnet.

Verfasst: 18. Mai 2006 13:04
von chemstar
jetzt läuft es. kommischerweise habe garnichts verändert und es ist so ;-)

der header ist gedreht nur der bereich der unter dem header liegt ist etwa 3* so groß. weiss jemand in welcher methode dieser bereich gezeichnet wird?

Verfasst: 26. November 2007 22:14
von OscarWild
Hallo,

ich stehe gerade vor dem fast gleichen Problem, nur geht es bei mir um den horizontalen Header; über die Matrixoperation wird der Text zwar einwandfrei gedreht, aber vom Header wird insgesamt nur ein Quadratischer Bereich (Höhe komplett, Breite = Höhe) gezeichnet.
chemstar, hat bei Dir letztendlich alles wie gewünscht funktioniert, bzw. hat sonst jemand einen Tipp dazu?

Gruß + Vielen Dank
OscarWild