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
subclassing QHeaderView
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.
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.
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
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