Seite 1 von 1

QListWidget Qt::MoveAction statt Qt::CopyAction

Verfasst: 30. Oktober 2005 11:54
von janusius
Hi,

ich habe ein ListWidget (QT4), das ich mit items fülle. Deren Reihenfolge soll per drag&drop veränderbar sein. Dazu müsste ich wahrscheinlich statt CopyAction MoveAction benutzen, da sonst das item verdoppelt wird. Ich weiß nur nicht wie ich das aktivieren könnte. Hat jemand einen Tip?

Gruß

Verfasst: 30. Oktober 2005 16:55
von Esleborn
Beispielsweise: (wenig elegant): in dem (von QListWidget abgeleitetem) Widget in dem du drops, den dropEvent wie folgt überladen, falls du, wenn kein Modifier (Shift/Alt/Strg) gedrückt wurde, einen Move statt einem Copy willst. Sollte als Beispiel ausreichen:

Code: Alles auswählen

void WIDGET::dropEvent ( QDropEvent *fp_event )
{
   fp_event->setDropAction ( Qt::MoveAction );

   if ( fp_event->keyboardModifiers ( ) == Qt::NoModifier )
   {
      if ( fp_event->dropAction ( ) == Qt::CopyAction )
         fp_event->setDropAction ( Qt::MoveAction );
   }else
      fp_event->setDropAction ( Qt::CopyAction );

   QListWidget::dropEvent ( fp_event );
}
hilft dir das?

Elgrimm Esleborn

Re: QListWidget Qt::MoveAction statt Qt::CopyAction

Verfasst: 31. Oktober 2005 08:38
von macman
janusius hat geschrieben:Deren Reihenfolge soll per drag&drop veränderbar sein. Dazu müsste ich wahrscheinlich statt CopyAction MoveAction benutzen, da sonst das item verdoppelt wird.
Ich bin jetzt etwas verwirrt. Wenn Du die Reihenfolge innerhalb eines ListWidgets ändern willst, dann nimm takeItem und insertItem. Was hat das mit den Actions zu tun? Durchsuch mal die qt-interest Liste oder den Tasktracker. Da war mal ein Stückchen Code, in dem das gemacht wurde.

Verfasst: 31. Oktober 2005 09:52
von janusius
Hallo,

danke für die Tips!.
Ich dachte es ist am einfachsten mit ::MoveAction, da es ja im Pronzip schon funktioniert durchd ei Einstellungen im Designer mit dem Unterschied, dass er es eben kopiert und nicht verschiebt.
Ich muss jetzt doch die ein ListView benutzen ... und da ist die Sache leider wieder etwas komplizierter mit drag&drop.