Spaltenbreite im QTabelView automatisch anpassen

Alles rund um die Programmierung mit Qt
Antworten
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Spaltenbreite im QTabelView automatisch anpassen

Beitrag von BartSimpson »

Hallo,
ich habe folgendes vor:
1. das nach der Übergabe des Modells an den View die Spalten automatisch an die Breite des Textes angepasst werden.
2. Wenn man das Fenster in dem sich der View befindet vergößert/verkleinert, sollen sich auch die Spalten in der Breite ändern.
BJJ380
Beiträge: 2
Registriert: 21. Dezember 2007 22:49
Wohnort: Berlin Steglitz

Beitrag von BJJ380 »

zu 1. Breite des Textes anpassen...

Code: Alles auswählen

tableView->resizeColumnsToContents();
zu2. Spalten in der Breite ändern...

Code: Alles auswählen

tableView->horizontalHeader()->setStretchLastSection( true );
MfG JJ
comer352l
Beiträge: 47
Registriert: 10. Juli 2007 18:10

Beitrag von comer352l »

...oder das Resize-Verhalten der Spalten über QHeaderView festlegen, was dann so ausschaut:

Code: Alles auswählen

QHeaderView *headerview = myTableWidget->horizontalHeader();
headerview->setResizeMode(column, QHeaderView::ResizeToContents);
Die Spaltenbreite wird dann automatisch dem Inhalt angepasst.
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

Danke comer352l genau das hatte ich gesucht.:)
Damit ist schon mal der 1. Teil gelöst.
comer352l
Beiträge: 47
Registriert: 10. Juli 2007 18:10

Beitrag von comer352l »

Um den Spaltenbreite bei Größenänderungen des QTableWidgets neu festzulegen kannst du z.B die die function

resizeEvent ( QResizeEvent * event )

implementieren, in der du dann die notwendigen Berechnungen machst und die Spaltenbreiten dann mit setColumnWidth(int) setzt.
Falls du einfach nur erreichen möchtest, dass die Spalten die komplette Tabellenbreite ausnutzen, dann tut's evtl. auch eine Spalte mit QHeaderView::Stretch
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

Jetzt habe ich dabei noch ein anderes Problem endeckt. dass setResizeMode(QHeaderView::ResizeToContents); das ganze Modell nicht drurchgeht. Daher sind die Spalten nicht so breit wie der breiteste Text.(Wenn dieser erst nach dem Scrollen sichtbar wird)
KillerKing
Beiträge: 7
Registriert: 14. November 2008 14:00

Beitrag von KillerKing »

und wie hast du dieses letzte Problem gelöst?
BartSimpson
Beiträge: 1379
Registriert: 6. November 2004 12:03
Kontaktdaten:

Beitrag von BartSimpson »

Noch nicht wirklich.
habe das erst mal so gelassen mangels Zeit.
KillerKing
Beiträge: 7
Registriert: 14. November 2008 14:00

Beitrag von KillerKing »

Schade, hab nämlich das selbe Problem.

Was mir aufgefallen ist: Sobald ich auf den Header der Spalte klicke, passt er die Spaltenbreite auf das längste Item doch an, aber erben erst nach dem Klick. Hm, das müsste man doch automatisieren können?
Antworten