[Qt/C++] Drag&Drop

[Moepi]1

Lt. Commander
Registriert
Jan. 2002
Beiträge
1.233
Mittlerweile komme ich zu den fortgeschrittenen Sachen ;). Also folgendes soll geschehen:
Innerhalb eines QFrames hab ich ein QLabel mit nem Pixmap (PNG Bild) gesetzt. Dieses QLabel soll nun mit der Maus verzogen werden können. Dabei ist aber folgendes zu beachten:

Das Label soll in Echtzeit verschoben werden (also praktisch während ich es verschiebe ständig die Position ändern - so ähnlich wie ein Windowsfenster was man verschiebt). Das ist Problem Nummer 1.
Problem Nummer 2 sollte sich dann relativ leicht durch Signals lösen lassen, die bei jedem Verschieben (also praktisch ständig während der Bewegung des Labels) gesendet werden. Es geht darum die Postion des Labels in Form von X/Y Koordinaten an eine Funktion zu schicken.

Ich scheitere derzeit an ersterem. Zwar hab ich es geschafft, das Label zu verschieben. Allerdings wird eine Kopie des Labels erstellt, die ich dann verschiebe. Das Label wechselt aber erst seine Postion, wenn ich es wieder loslasse. Das reicht leider nicht... :(


Für Vorschläge bin ich wie immer dankbar...
 
(Oh Mann, das habe ich jetzt mit Qt noch nie gemacht :))

Das kennst du ja garantiert schon: http://doc.trolltech.com/4.1/dnd.html

Zu "Kopie des Labels":
Kann man den QDragObject oder QDrag nicht irgendwie einen Zeiger auf das zu verschiebende Object übergeben, so dass keine Kopie angelegt werden muss?

Wegen dem Neuzeichnen während dem Verschieben, weiß ich nix.

Zu Problem 2:
Du musst halt die QMouseEvents abfangen und dann die Koordinaten des Labels in Relation zum Nullpunkt des PrentWidget des Labels auslesen (mit der Methode Qwidget::pos (), liefert ein QPoint).
 
Boron schrieb:

Das war meine erste Anlaufstelle. Mit Hilfe dessen hab ich ja das Verschieben mit Kopie hinbekommen (ohne den Code restlos verstanden zu haben). Ich seh schon, das wird mich noch ne Zeit lang beschäftigen....

/edit:
Habs mit den Tutorials hinbekommen aber noch net ganz verstanden... :D
 
Zuletzt bearbeitet:
Zurück
Oben