[Qt 4.1] QListWidgetItem in einem QListWidget verschieben

Code-Schnippsel, oder Tipps und Tricks, die einem beim Programmieren mit Qt helfen können.
Antworten
ChMaster
Beiträge: 252
Registriert: 23. Februar 2005 14:44
Wohnort: RP -> Alzey
Kontaktdaten:

[Qt 4.1] QListWidgetItem in einem QListWidget verschieben

Beitrag von ChMaster »

servus,

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 ) );
ich hoffe es nützt was ;)
ChMaster
------------ Projekte------------
DBoxFE
DMS
First4 (Plugin-Develper)
Antworten