Ich verwende Qt4 und ich habe eine QTableView
, die Daten mit einem benutzerdefinierten Modell anzeigt. Ich hätte gerne zwei Zeilen im Tabellenkopf, idealerweise mit einigen Zellen in der ersten Reihe, die sich über mehrere Spalten erstrecken. Ist das möglich?Kann ich mehr als eine Zeile in einem Tabellenkopf in Qt haben?
Antwort
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.
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.
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.
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
- 1. Wie kann ich in xmonad mehr als 9 Arbeitsbereiche haben?
- 2. Kann ich mehr als eine Klasse haben, die die Methode main() in einem Java-Projekt enthält?
- 3. Kann eine Objective-c-Schnittstelle mehr als eine Implementierung haben?
- 4. Subquery gibt mehr als eine Zeile SQL
- 5. Kann ich mehr als einen sectionNameKeyPath in einem fetchedResultsController verwenden?
- 6. Sollte ich mehr als 1 Datenbankverbindung haben?
- 7. T-SQL: Partitionen auswählen, die mehr als 1 Zeile haben
- 8. Kann ich mehr als 1 'Mongos' Instanz haben?
- 9. Python - kann Lambda mehr als eine Rückkehr haben
- 10. Abfrage zurück mehr als eine Zeile?
- 11. Wird QT eine Zukunft als GUI Toolkit auf MacOSX haben?
- 12. Sub-Abfrage Rückkehr mehr als eine Zeile
- 13. Wie füge ich mehr als eine Zeile mit Zend_Db hinzu?
- 14. Wie kann ich .In LINQ mehr als eine Ebene enthalten?
- 15. Python schreibe mehr als eine Zeile in csv
- 16. wenn Anweisung in R nur eine Zeile haben kann?
- 17. Wie kann ich eine einzelne Zeile in einem ListView aktualisieren?
- 18. Wie kann ich mehr als eine Benutzeroberfläche für ein QMainWindow haben?
- 19. Kann ich eine Anwendungsbereichsvariable in Perl haben?
- 20. Kann ich eine Init-Funktion in einem Protokoll haben?
- 21. Wie benutze ich den Tabellenkopf für Einträge und eine Zeile für Eigenschaften in JavaFX
- 22. alle Zeilen auswählen, die mehr als eine ID in einem bestimmten Datum haben
- 23. Android - Wie kann ich mehr als eine Zeile in einem TextView anzeigen und auch von unten nach oben zeigen
- 24. Kann ein Java Enum mehr als einen Konstruktor haben?
- 25. Wie kann man mehr als eine Option in Sunspot suchen?
- 26. Ist es möglich, mehr als eine main() -Methode in einem C# -Programm zu haben?
- 27. Wie kann ich eine neue Zeile in einem Textfeld bekommen?
- 28. Kann in Laravel eine Migrationsdatei mehr als eine Tabelle erstellen?
- 29. DICOM-Feld haben mehr Wert als erwartet
- 30. Can Elastic Search Plugin haben mehr als eine onModule Funktion
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
@Predelnik, ich bin mir nicht sicher; Ich muss die Lizenz dieses Projekts mit einer anderen verwechselt haben. – jtooker