QT4: QTableWidget Spaltenbreite automatisch anpassen.

Alles rund um die Programmierung mit Qt
Antworten
nando
Beiträge: 321
Registriert: 28. Oktober 2004 13:16

QT4: QTableWidget Spaltenbreite automatisch anpassen.

Beitrag von nando »

Hi,
weiss einer, wie man unter QT4 einer QTable sagen kann, dass die spalten automatisch auf die benoetigte groesse angepasst werden,
oder falls das nicht geht, wie ich das manuell machen kann...
wie bekomme ich die benoetigte width und height fuer die einzelnen items unter beruecksichtigung der fonts etc....??

gruss,
nando
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Es gibt unter Qt4 kein QTable...
nando
Beiträge: 321
Registriert: 28. Oktober 2004 13:16

Beitrag von nando »

hi....

also dann eben in der QTableWidget bzw. QTableView.....

gruss,
nando
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

In der Doku unter public slots zu finden:

void QTableView::resizeColumnToContents ( int column )
void QTableView::resizeColumnsToContents ()
void QTableView::resizeRowToContents ( int row )
void QTableView::resizeRowsToContents ()
mogul
Beiträge: 1
Registriert: 23. Juni 2006 09:18

Beitrag von mogul »

Auch aus der Doku:

deineTabelle->horizontalHeader()->setResizeMode(0, QHeaderView::Stretch);

Funktioniert auch bei resize.
Locutus

Beitrag von Locutus »

Ich habe das Problem, daß ich die Länge der Header vorgeben möchte, kann man das?
So soll zum Beispiel "Pfad der Datei" den meisten Platz einnehmen und "Größe" und "Attribute" ganz klein sein. Im Moment ist es so, daß der letzte Headereintrag den größten Platz für sich beansprucht, mit QHeaderView::Stretch läßt sich das leider nicht so beheben, wie ich gerne möchte.

Ich habe unter QHeaderView sonst nichts in der Anleitung gefunden was mich wirklich weitergebracht hätte :roll:
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Locutus hat geschrieben:Ich habe unter QHeaderView sonst nichts in der Anleitung gefunden was mich wirklich weitergebracht hätte :roll:
Ist natürlich auch schwer zu finden :-)
void QHeaderView::resizeSection ( int logicalIndex, int size )
Locutus

Beitrag von Locutus »

Vielen Dank für deine Antwort.
Wobei

Code: Alles auswählen

ui.treeWidget->header()->resizeSection(0, 450);
bei mir keine Wirkung zeigt?
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

Es geht. Hier ein Auszug aus meinem Code:

Code: Alles auswählen

	QHeaderView* header = new QHeaderView(Qt::Horizontal, tableWidget);
	header->setToolTip("Header");
	header->setClickable(true);
	header->setSortIndicatorShown(true);
	tableWidget->setHorizontalHeader(header);
	tableWidget->setColumnCount(11);
	tableWidget->setHorizontalHeaderLabels(labels);
	tableWidget->setSortingEnabled(true);
	header->setResizeMode(QHeaderView::Interactive);
	header->setResizeMode(1, QHeaderView::Stretch);
	header->resizeSection(0,23);
	header->resizeSection(1,210);
	header->resizeSection(2,60);
	header->resizeSection(3,60);
Die einzelnen Sektionen sind unterschiedlich und nur die 2. sized mit, wenn sich die Größe ändert.
Locutus

Beitrag von Locutus »

Ich habe jetzt herausgefunden warum das bei mir nicht ging. Ich habe unter Edit Items die Columns direkt eingegeben. Diese ließen sich dann aber mit ui.treeWidget->header()->resizeSection(1, 450); nicht verändern, wenn ich den Header aber z.B.

Code: Alles auswählen

ui.treeWidget->setColumnCount(4);
QStringList headers;
headers << tr("Subject") << tr("Default") << tr("Default") << tr("Default");
ui.treeWidget->setHeaderLabels(headers);
erzeuge, dann zeigt auch resizeSection Wirkung.
Das ist doch ein Qt-Bug (4.14), oder? Ist dann ja kein Wunder, daß ich nicht weiterkomme :x
Antworten