Seite 1 von 1
QTableView mit Footer
Verfasst: 19. April 2010 12:30
von tec_1
Hallo,
ich möchte gern für ein QTableView einen Footer implementieren. Gibt es dafür evtl. schon etwas Fertiges oder ein gutes Beispiel? Wie habt Ihr das bisher realisiert?
Verfasst: 19. April 2010 19:30
von upsala
Wo soll den dieser Footer genau sein?
Verfasst: 20. April 2010 09:11
von tec_1
Na als Fußzeile unter der letzen Zeile.
Verfasst: 20. April 2010 09:32
von franzf
Über ein VBoxLayout?!?
Code: Alles auswählen
QVBoxLayout* footerLayout = new QVBoxLayout(this);
QTableView* table = new QTableView;
FooterWidget* footer = new FooterWidget;
footerLayout->addWidget(table);
footerLayout->addWidget(footer);
Verfasst: 20. April 2010 11:28
von tec_1
Ja über ein eigenes Widget mit einzeiliger Tableview habe ich es auch realisiert. Nur muss man hier viel an Handarbeit leisten um die Zellen wirklich immer genau gleichbreit und übereinander zu haben. Komisch, dass QT das nicht bereits implementiert hat.
Verfasst: 20. April 2010 12:24
von upsala
Stimmt Qt hätte gleich ein passendes Widget fertig mit den Daten gefüllt liefern können.
Zwei Tables übereinander und dem unteren Widget den Header von oben zuweisen.
Verfasst: 20. April 2010 13:06
von tec_1
upsala hat geschrieben:Stimmt Qt hätte gleich ein passendes Widget fertig mit den Daten gefüllt liefern können.
Zwei Tables übereinander und dem unteren Widget den Header von oben zuweisen.
Ich gehe mal davon aus, dass der fett gedruckte Teil sarkastisch gemeint war. Und nein so einfach wie von dir beschrieben ist es nicht. Da gibt es einige unschöne Dinge auf die ich jetzt besser nicht näher eingehen werde. Wenn man von etwas keine (praktische) Ahnung hat dann einfach mal... halten

Verfasst: 20. April 2010 13:28
von franzf
Solche Probleme entstehen immer dann, wenn die gestellten Anforderungen stark von den allgemeinen Anforderungen abweichen. Eine Tabelle braucht in fast allen Fällen vertikale und horizontale Beschriftungen - "Header".
Ein Footer, der auch noch als zusätzlicher "Header" fungieren soll ist mir bisher noch nicht untergekommen.
Daher ist eine direkte Lösung seitens Qt recht unwahrscheinlich.
Dein Problem ist trotzdem mit Qt-Mitteln leicht zu lösen.
Leg einfach ein zusätzliches QHeaderView unter deine Tabelle. Ein HeaderView sendet Signals beim resizen einzelner sections. Es existiert eine Methode "resizeSection" (leider kein Slot). Schreib dir dafür einen eigenen und connecte das SIGNAl das myTable->horizontalHeader() aussendet mit jenem SLOT und dein Footer wird automatisch an die Tabelle angepasst.
Verfasst: 20. April 2010 13:34
von tec_1
Dann muss
unter dem Footer(Summenzeile) auch noch ein horizontaler Scrollbalken. Und der Footer hat keinen vertikalen Scrollbalken, die überliegende Tabellle schon. Im Endeffekt habe ich es gelöst, es könnte aber einfacher sein
P.S.: Ich kann mir nicht vorstellen, dass eine Summenzeile, bzw. ein Footer so speziell ist. Bei anderen Komponenten, wie z.B. Java-Web-Komponenten ist ein Footer selbstverständlich.