QListWidget - Row-Grösse bei Klick verändern
Verfasst: 24. Oktober 2009 17:36
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:
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));
}