Seite 1 von 1

[gelöst][Qt 4.3.1]Problem mit QTreeWidget::setHeaderLabels()

Verfasst: 10. August 2007 09:17
von Ethan
Hi,
nach dem portieren von Qt 4.1.4 auf Qt 4.3.1 hat mein custom QTreeWidget seine Header columns + deren labels nicht mehr richtig dargestellt.
Vorgehensweise:
Im Qt-Designer ein QTreeWidget platzieren + promote to custom widget
danach im custom widget im Konstruktor folgender Code (der mit 4.1.4 perfekt funktioniert hatte):

Code: Alles auswählen

labels << ICON_COLUMN_TEXT << PREFIX_COLUMN_TEXT << MESSAGE_COLUMN_TEXT;
setHeaderLabels( labels );

setSortingEnabled( LIST_SORTABLE );
setRootIsDecorated( ROOT_DECORATED );

header()->setStretchLastSection(false);
header()->resizeSection(0,STARTUP_SECTION_0_SIZE);
header()->resizeSection(1,STARTUP_SECTION_1_SIZE);
header()->resizeSection(2,STARTUP_SECTION_2_SIZE);
header()->setSortIndicator(1,Qt::AscendingOrder);
hab ich irgendwas wichtiges übersehen? Wenn ich diese Befehle anstatt im custom widgets ctor, im Hauptdialog im ctor aufrufe machts auch keinen Unterschied - ich bekomme entweder nur eine Spalte mit der Aufschrift "1" oder ab und an auch mal zwei Spalten, obwohl diese dann die 1. ("1") und die 3. ("3") Spalte darstellen, was man auch am Inhalt erkennen konnte.
Ich kann mir dieses seltsame Verhalten nicht erklären, ich hoffe ich habt eine Idee.

Grüße,

Gabriel

Verfasst: 10. August 2007 10:23
von macman
columnCount gesetzt?

Verfasst: 10. August 2007 10:50
von Ethan
columnCount wars nicht!

Nach einigen nervenaufreibenden Versuchen, hab ich mir jetzt doch selbst geholfen:
Es scheint, dass die Daten, die vorher in dem zum custom widget promoteten QTreeWidget (welches eigentlich nur als Platzhalter dienen soll) eingestellt wurden die Daten die man selbst im custom widget ctor einstellt überschreibt.

Lösung des Problems war dann recht einfach:
Man lagert setHeaderLabels etc. pp alles in den Hauptdialog aus, der das custom widget enthält nachdem

Code: Alles auswählen

ui.setupUi(this);

ausgeführt wurde und überschreibt so die Einstellungen des "Platzhalters"

Komisch, warum das bei Qt 4.1.4 noch funktioniert hatte?! Falls ich falsch liege und/oder was falsch verstanden habe, klärt mich auf ;)