hier eine kleine aber feine Lösung
Der objectName 'lw' ist ein QListWidget.
QListWitgetItem um 1 Position nach oben verschieben
und das oberste um eins nach unten.
Code: Alles auswählen
// prüfen ob Item ausgewählt wurde
if( ui.lw->currentItem() == NULL )
return;
// hier prüfen wir ob das currentItem() schon das oberste ist
if( ui.lw->row( ui.lw->currentItem() ) <= 0 )
return;
// currentItem() festlegen
QListWidgetItem *item = ui.lw->currentItem();
// Item um eins nach oben und das erste um eins nach unten verschieben
ui.lw->insertItem( ui.lw->row( ui.lw->currentItem() ), ui.lw->takeItem( ui.lw->row( ui.lw->currentItem() ) ) );
// das verschobene Item als currentItem() festlegen
ui.lw->setCurrentItem( item );
QListWitgetItem um 1 Position nach unten verschieben
und das untere um eins nach oben.
Code: Alles auswählen
// prüfen ob Item ausgewählt wurde
if( ui.lw->currentItem() == NULL )
return;
// hier prüfen wir ob das currentItem() schon das unterste in der liste ist
if( (ui.lw->row( ui.lw->currentItem()) + 1 ) >= ui.lw->count() )
return;
// Item um eins nach unten und das untere um eins nach oben verschieben
ui.lw->insertItem( ui.lw->row( ui.lw->currentItem() ), ui.lw->takeItem( ui.lw->row( ui.lw->currentItem() ) + 1 ) );