QTableView mit Footer

Alles rund um die Programmierung mit Qt
Antworten
tec_1
Beiträge: 17
Registriert: 15. Dezember 2009 16:57

QTableView mit Footer

Beitrag 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?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Wo soll den dieser Footer genau sein?
tec_1
Beiträge: 17
Registriert: 15. Dezember 2009 16:57

Beitrag von tec_1 »

Na als Fußzeile unter der letzen Zeile.
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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);
tec_1
Beiträge: 17
Registriert: 15. Dezember 2009 16:57

Beitrag 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.
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag 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.
tec_1
Beiträge: 17
Registriert: 15. Dezember 2009 16:57

Beitrag 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 :D
franzf
Beiträge: 3114
Registriert: 31. Mai 2006 11:15

Beitrag 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.
tec_1
Beiträge: 17
Registriert: 15. Dezember 2009 16:57

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