Hey, ich habe dieses Tutorial durchgelesen, um die Methoden zum Ziehen und Ablegen in PyQt4 zu verstehen. Allerdings kann ich die folgenden Punkte nicht verstehen. Es wäre schön, wenn jemand es mir klarer machen könnte.
%Vor%Warum gibt es eine separate self.button.move () und e.setDropAction () Verschiebt self.button.move () tatsächlich die Schaltfläche selbst? Und könnte jemand erklären, was drag.setHotSpot und drag.start () tun? Danke.
Dieses Tutorial ist ernsthaft veraltet. QDrag.start
ist seit Qt 4.3 veraltet. QDrag.exec_
sollte stattdessen verwendet werden.
Wie Sie in den Dokumenten für exec
sehen können, hat es einen Rückgabewert. setDropAction
in dropEvent
bestimmt diesen Wert. Es führt den Umzug nicht durch. Deshalb brauchen Sie ein self.button.move()
, um das eigentliche Verschieben durchzuführen. Also, was ist der Sinn von setDropAction
? Sie müssen möglicherweise wissen, welche Art von Ziehen Sie ausgeführt haben. Stellen Sie sich vor, Sie implementieren Drag-Drop zwischen zwei Listen-Widgets. Wenn Sie eine Verschiebungsoperation ausgeführt haben, müssen Sie das Objekt aus dem Quellwidget entfernen und im Ziel erstellen. Wenn es sich um einen Kopiervorgang handelt, können Sie das Original belassen und nur eine Kopie im Ziel erstellen.
setHotSpot
/ hotSpot
bezieht sich auf setPixmap
von QDrag
. Sie können ein QPixmap
anzeigen, während Sie das Element ziehen. hotSpot
bestimmt die Positionierung der Pixmap. Die Pixmap wird so positioniert, dass sich der Cursor relativ zur oberen linken Ecke der Pixmap in hotSpot
befindet. Im Fall dieses Tutorials ist es ziemlich sinnlos, da kein Pixmap angezeigt wird.
Hier ist eine etwas modifizierte und aktualisierte Version dieses Tutorials. Hoffentlich habe ich genug Kommentare aufgenommen. Sie können verschieben mit Right-Click
oder kopieren mit Shift + Right-Click
:
Tags und Links python qt button pyqt4 drag-and-drop