Seite 1 von 1

QListWidget - Row-Grösse bei Klick verändern

Verfasst: 24. Oktober 2009 17:36
von mic_mic
Hallo zusammen
Ich bin ein absoluter Neuling in Qt und versuche mich verzweifeilt an einem QListWidget. (Grundlagen zu Qt usw. habe ich mir schon mit einem entsprechenden Buch angeeignet ;)

Mein Problem:
Ich möchte, dass bei Auswahl eindes Eintrags im QListWidget dieser in der Höhe verändert wird. (Damit ich noch mehr Infos anzeigen kann..)
Nun habe ich zwei Möglichkeiten auspropiert:

1. Eigene Delegate-Klasse mit paint() und sizeHint() erstellt. In sizeHint() geprüft ob Row aktiv ist und eine andere Höhe gesetzt.
2. Beim Clicked-Signal alle Rows durchlaufen und bei der selektierten Row per setSizeHint() neue Höhe gesetzt.

Beide Wege haben aber das gleiche Problem. Der selektierte Eintrag wird zwar höher, er verschiebt jedoch die nachfolgenden Rows nicht! Die Rows überlappen sich somit!. (Siehe Bild im Anhang)

Was kann man da machen? mit repaint() usw. funktioniert es auch nicht..

Danke & Gruss
Mic

Hier noch der Slot welcher Click-Event verarbeitet:

Code: Alles auswählen

void MainWindow::mainListItemSelected(QListWidgetItem *item)
{
    int i = 0;

    for (i=0; i<ui->mainList->count(); i++) {
            ui->mainList->item(i)->setSizeHint(QSize(0,70));
     }
    item->setSizeHint(QSize(0,150));
}

Lösung

Verfasst: 25. Oktober 2009 12:24
von mic_mic
Hab die Lösung nach lagem Suchen gefunden:

Nach dem Verändern der Grösse noch doItemsLayout() aufrufen und siehe da, alles i.O. ;)