subclassing QHeaderView

Alles rund um die Programmierung mit Qt
Antworten
chemstar
Beiträge: 13
Registriert: 25. April 2006 11:04

subclassing QHeaderView

Beitrag 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
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Womit kommst Du nicht weiter, mit dem ableiten oder mit dem Text drehen?
chemstar
Beiträge: 13
Registriert: 25. April 2006 11:04

Beitrag 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.
chemstar
Beiträge: 13
Registriert: 25. April 2006 11:04

Beitrag 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?
OscarWild
Beiträge: 54
Registriert: 19. Juni 2006 19:59

Beitrag 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
Antworten