2010-02-25 3 views

Antwort

2

Ich suchte auch nach einer Lösung für dieses Problem. Ich habe diese Klasse gefunden: HierarchicalHeaderView bei qt-apps.org von Benutzer Barmaglodd (Krasnoshchekov Petr).

Diese Lösung geht über das hinaus, was Sie (und ich) brauchen. Außerdem kann ich ihre Lösung aufgrund ihrer Copyright-Hinweise nicht verwenden.

This post von blog.qt.digia.com von Andy Shaw zeigt Ihnen, wie QComboBoxes über eine Kopfzeile zu überlagern. In meiner Lösung habe ich dasselbe mit einer anderen Header-Ansicht gemacht. Dies ist ähnlich wie sie overlaid a QTableView on a QTableView for the Qt Frozen column example. Für diese Lösung müssen Sie sowohl das QTableWidget als auch das QHeaderView ableiten. Wenn Sie dem Benutzer die Spaltenbreite anpassen möchten, die zusätzliche Arbeit erfordert.

Tipp: Überladen Sie den SizeHint, um eine Höhe von 2x der normalen Höhe der Hauptansicht zu erhalten, richten Sie den Text der Hauptkopfansicht nach unten aus und zeichnen Sie die andere Kopfzeile über die normale Kopfzeile im

showEvent(QShowEvent* e) 

Methode.

+0

Ihre erste Verbindung ist großartig, aber ich frage mich, in welchen Umständen können Sie BSD lizenzierten Code aufgrund der Lizenz unbrauchbar finden? – Predelnik

+0

@Predelnik, ich bin mir nicht sicher; Ich muss die Lizenz dieses Projekts mit einer anderen verwechselt haben. – jtooker

2

Sie können eine benutzerdefinierte Kopfzeile erstellen, indem Sie eine QTableWidgetItem und dann die setHorizontalHeaderItem() verwenden. Die Methode verwendet eine Spaltennummer, daher bin ich mir nicht sicher, ob das native Überspannen mehrerer Spalten ermöglicht - zumindest könnten Sie jedoch dasselbe QTableWidgetItem für mehrere Spalten verwenden.

Soweit zwei Zeilen in der Kopfzeile verwenden, glaube ich nicht, dass dies derzeit unterstützt wird. Sie können diese Funktionalität jedoch möglicherweise hinzufügen, indem Sie Ihre eigene abgeleitete Klasse QTableWidget rollen, wenn Sie ehrgeizig sind.

2

Ich hatte ein ähnliches Problem in Bezug auf die multiplen Kopfzeilen eines QTableView. Ich löste es mit einem einfachen "\ n" im Text der Spaltenüberschrift.

1

Unter dem Eindruck von HierarchicalHeaderView habe ich einen Python-Port davon gemacht und ein einfaches Modell, um Pandas DataFrames mit Multilevel-Header (MultiIndex) in QTableView anzuzeigen.

Hier sind die ersten Ergebnisse dataframemodel. upd: es ist ziemlich langsam mit großen DataFrames

Verwandte Themen