Zeilenbreite optimal auf Tabellenbreite verteilen
Verfasst: 16. September 2007 07:34
Hi,
ich habe eine QTableWidget in dem ich drei Spalten habe. Falls die Summer der Spaltenbreiten grösser ist als die Breite der Tabelle dann habe ich eine Scrollbar. --> okay. Wenn die drei Spalten aber schmaeller sind als die Tabelle sieht das blöd aus, als ob eine Spalte fehlt. Ich möchte die Spalten daher einfach etwas breiter machen als sie wirklich sein müssten. Das Problem bei der Berechnung ist die "-1. Spalte", die immer die Zeilennummer angibt. Ich habe deren Breite geraten und abgezogen:
Die 19 Pixel sind durch probieren entstanden. Ich weiss nicht ob diese Spalte wirklich oder immer 19 Pixel sind. Gibt es da einen besseren Weg?
Danke,
J.
ich habe eine QTableWidget in dem ich drei Spalten habe. Falls die Summer der Spaltenbreiten grösser ist als die Breite der Tabelle dann habe ich eine Scrollbar. --> okay. Wenn die drei Spalten aber schmaeller sind als die Tabelle sieht das blöd aus, als ob eine Spalte fehlt. Ich möchte die Spalten daher einfach etwas breiter machen als sie wirklich sein müssten. Das Problem bei der Berechnung ist die "-1. Spalte", die immer die Zeilennummer angibt. Ich habe deren Breite geraten und abgezogen:
Code: Alles auswählen
void addressbook::enlargeColumns(){ // just in case the sum of all columns is smaller than the table itself
double cw, twt, twc;
int ncw;
twt = (tableWidget -> width()) - 19; //19 points for the header column fix <-- Hier ist die Zeile auf die sich meine Frage bezieht
twc = tableWidget -> columnWidth(0) + tableWidget -> columnWidth(1) + tableWidget -> columnWidth(2);
qDebug() << "twt " << twt << " twc " << twc;
for(int i = 0; i < 3; i++){
cw = tableWidget -> columnWidth(i);
ncw = (int) (( 1.0 + ((twt - twc) / twc)) * cw);
qDebug() << "cw " << cw << " ncw " << ncw;
tableWidget -> setColumnWidth(i,ncw);
}
twc = tableWidget -> columnWidth(0) + tableWidget -> columnWidth(1) + tableWidget -> columnWidth(2); // twc has changed, recalculate it
qDebug() << "new twc " << twc;
if(twt != twc) tableWidget -> setColumnWidth(2, ncw + (int) twt - (int) twc); // A few pixel rounding difference, just add it to the last column
}
Danke,
J.