Ich bin neu in QT und ich habe gerade geschafft, eine QTableView mit meinem Modell arbeiten. Es hat 3 Spalten festgelegt. Wenn ich ein Fenster öffne, sieht es in Ordnung aus, aber wenn ich die Größe des Fensters ändere, wird QTableView selbst skaliert, aber die Spaltenbreite bleibt gleich. Gibt es einen eingebauten Weg, um es zum Laufen zu bringen? Ich möchte Spalten die Größe anpassen, um die Kanten von QTableView bei jeder Änderung der Größe des Fensters anzupassen.Spalten automatisch auf die Größe von QTableView
Antwort
Es gibt ein Header-Flag, um sicherzustellen, dass die letzte Spalte von QTableView das übergeordnete Element füllt, wenn die Größe geändert wird. Sie können es so einstellen:
table_view->horizontalHeader()->setStretchLastSection(true);
Jedoch ändert das nicht die anderen Spalten proportional. Wenn Sie das auch tun wollen, können Sie es innerhalb der resizeEvent Ihrer Eltern behandeln thusly:
void QParent::resizeEvent(QResizeEvent *event) {
table_view->setColumnWidth(0, this->width()/3);
table_view->setColumnWidth(1, this->width()/3);
table_view->setColumnWidth(2, this->width()/3);
QMainWindow::resizeEvent(event);
}
QParent Klasse Unterklasse von QMainWindow ist.
Ich habe den zweiten Teil nicht getestet, aber der erste funktionierte, obwohl ich entschied, das Fenster nicht mehr zu machen (machte mir mehr Sinn) – khajvah
Um proportionale Spaltenbreiten zu setzen, fand ich es am einfachsten, das resizeEvent wie gezeigt zu überschreiben, aber durch Unterklassen die fragliche QTableView und nicht das QMainWindow. – jtbr
Widgets QTableView, QTreeView und deren abgeleiteten Klassen (wie QTableWidget) haben diese zwei nützliche Methoden:
QHeaderView* horizontalHeader() const;
QHeaderView* verticalHeader() const;
Wenn Sie offene Dokumentation für eine Klasse QHeaderView, finden Sie Methoden, die eingerichtet Aussehen und Verhalten Zeilen- oder Spaltenüberschrift für Elementansichten.
void QHeaderView::stretchLastSection(bool stretch)
Wie Davy Jones erwähnt: Sie können Ihr Problem durch eine dieser Methoden lösen.Beispiel:
QTableView *table = new QTableView(); table->horizontalHeader()->setStretchLastSection(true);
void QHeaderView::setResizeMode(ResizeMode mode)
Als Modus Sie QHeaderView :: Stretch oder QHeaderView :: ResizeToContents einstellen.
Leider hat diese Methode einen Nachteil - nach der Anwendung können Sie die Größe der Spalten (oder Zeilen) nicht manuell (in der GUI) oder programmgesteuert ändern.Beispiel:
QTableView *table = new QTableView(); table->horizontalHeader()->setResizeMode(QHeaderView::Stretch);
Dieser Code Stretchs gleichermaßen jede Spalte, so dass sie die Breite des Tisches passen.
table->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
Docs:
- QHeaderView::setSectionResizeMode
- Siehe Modi here ändern.
Ich will dich jetzt küssen, nur Spaß ;-) .. Ich habe so lange nach dieser Linie gesucht .. danke –
Perfekt ... Dies ist die perfekte Lösung für die TableView Stretching/Skalierung Problem. Wirklich danke a Menge.. – Maxx
- 1. So stellen Sie sicher, dass die Spalten in QTableView auf das Maximum geändert werden
- 2. div automatisch die Größe Stellen
- 3. set jquery ThickBox Größe auf automatisch
- 4. QTableView wird beim Ändern der Größe des Hauptfensters nicht skaliert
- 5. Spalten Datentyp automatisch setzen
- 6. automatisch UI Größe auf unterschiedliche Bildschirmauflösung
- 7. Wie ändert man die Größe von Kakao xcode automatisch?
- 8. wie die QTableView Headername in PyQt4 einstellen
- 9. Aktualisieren von Daten auf QTableView von der Website (mit Unterbrechungen)
- 10. Div Größe Automatisch Größe des Inhalts
- 11. NSTableColumn automatisch Größe ändern nur die erste Spalte
- 12. Zwei Spalten automatisch füllen
- 13. Wie man die Größe von JFrame nach Inhalt automatisch ändert
- 14. Wie wird die Größe von Listboxitem automatisch angepasst?
- 15. QTableView nicht aktualisiert auf DataChanged
- 16. Benutzer kann die Größe von DataGridView-Spalten nicht ändern
- 17. C# Größe automatisch ändern zu DataGridView Größe
- 18. Spalten automatisch in INSERT INTO ... SELECT ... von
- 19. Items in ItemControls Größe automatisch
- 20. Qt - Löschen von QTableView Inhalt
- 21. Textfelder in HTML-Tabelle: Wie automatisch Größe?
- 22. QTableView Sortiersignal?
- 23. Größe der Varchar-Spalten
- 24. Wie wird automatisch die Größe von JButton-Text basierend auf der Größe von JButton erhöht oder verringert?
- 25. Force Größe von GridView Spalten innerhalb ListView
- 26. WPF-GridView-Spalten automatisch erstellen
- 27. Wie ändere ich die Größe QTableView so dass die Fläche nicht mehr gescrollt wird
- 28. iOS: UICollectionViewCell passt die Größe automatisch an die Bildschirmgröße an
- 29. automatisch eine div die Größe, die andere enthält zwei div
- 30. Wie ändert man die Größe von Schaltflächen automatisch, wenn das Fenster seine Größe ändert?
Wollen Sie immer, dass die Spaltenbreiten gleich sind?Wenn nicht, können Sie die Breite der letzten Spalte dehnen, indem Sie table-> horizontalHeader() aufrufen -> setStretchLastSection (true); –