QListWidget Qt::MoveAction statt Qt::CopyAction

Alles rund um die Programmierung mit Qt
Antworten
janusius
Beiträge: 6
Registriert: 28. Oktober 2005 20:45

QListWidget Qt::MoveAction statt Qt::CopyAction

Beitrag 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ß
Esleborn
Beiträge: 265
Registriert: 27. Januar 2005 01:23
Wohnort: Baden-Würtenberg
Kontaktdaten:

Beitrag 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
Glaube an eine Lösung, nur dann kannst du auch eine finden.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

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

Beitrag 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.
janusius
Beiträge: 6
Registriert: 28. Oktober 2005 20:45

Beitrag 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.
Antworten