Seite 1 von 1
QT4: QTableWidget Spaltenbreite automatisch anpassen.
Verfasst: 15. Juni 2006 14:50
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
Verfasst: 15. Juni 2006 20:04
von upsala
Es gibt unter Qt4 kein QTable...
Verfasst: 15. Juni 2006 20:19
von nando
hi....
also dann eben in der QTableWidget bzw. QTableView.....
gruss,
nando
Verfasst: 15. Juni 2006 21:09
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 ()
Verfasst: 23. Juni 2006 09:21
von mogul
Auch aus der Doku:
deineTabelle->horizontalHeader()->setResizeMode(0, QHeaderView::Stretch);
Funktioniert auch bei resize.
Verfasst: 5. November 2006 17:37
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

Verfasst: 6. November 2006 07:14
von macman
Locutus hat geschrieben:Ich habe unter QHeaderView sonst nichts in der Anleitung gefunden was mich wirklich weitergebracht hätte

Ist natürlich auch schwer zu finden

void QHeaderView::resizeSection ( int logicalIndex, int size )
Verfasst: 6. November 2006 13:50
von Locutus
Vielen Dank für deine Antwort.
Wobei
bei mir keine Wirkung zeigt?
Verfasst: 6. November 2006 15:03
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.
Verfasst: 6. November 2006 15:35
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
