[PyKDE] Drag-Drop Doom
Vio
vmilitaru at sympatico.ca
Tue Jul 29 10:16:01 BST 2003
Greetings,
I am trying to implement D&D.
Dragging seems to work, but my code ain't "dropping" it.
Could someone "drag" their eyeballs over my code and maybe "drop" me some hints...
Ok, what I want to do is simple: I have 2 or more instances of
"my_QIconView", populate them with some icons,
and then I want to "D&D" icons between them.
Incidently, D&D inside the same my_QIconView works (don't ask me why:).
Just not between side-by-side my_QIconView instances.
In my opinion, the problem resides somewhere in "contentsDropEvent()", but then
I don't quite understand the C++ examples 'dragdrop' nor 'fileiconview'.
Couldn't find much on D&D in the list's archive either.
Cheers,
Vio
--- start code segment ----------------------------------
class my_QIconView(QIconView):
"testing Drag&drop"
def __init__(self,dragSource = None,name = None):
QIconView.__init__(self, dragSource, name)
self.setAcceptDrops(TRUE)
# DRAG ----------
def startDrag(self):
"Drag-drop functionality"
print self.parent().name(),'---startDrag---'
d = self.dragObject() # get appropriate drag object
print self.parent().name(),'d1>',d
# d.drag(QIconDrag.DragCopyOrMove) - bad call: runtime error
d.dragMove()
# d.dragCopy() # calls dragEnterEvent,dragMoveEvent,dragLeaveEvent
# when 'drag' cursor leaves widget's boundaries
print self.parent().name(),'d2>',d
def dragEnterEvent(self, e):
print self.parent().name(),'---dragEnterEvent---',e.format()
print 'canDecode>',e.accept(QIconDrag.canDecode(e))
def dragMoveEvent(self, e):
print self.parent().name(),'---dragMoveEvent---',e.pos()
if e.source():
e.acceptAction()
def dragLeaveEvent(self, e):
print self.parent().name(),'---dragLeaveEvent---',e
# DROP ---------------
def contentsDropEvent(self, e):
print self.parent().name(),'---contentsDropEvent---'
print self.parent().name(),e.encodedData(e.format())
print 'e>',e
print 'action>',e.action()
if e.action() == QDropEvent.Move:
print 'contentsDropEvent> MOVE'
elif e.action() == QDropEvent.Copy:
print 'contentsDropEvent> COPY'
""" BAD code following up: yes, how do I get at my icon from here?
icon = QPixmap()
if QIconDrag.canDecode(e, icon):
self.insertItemAt(icon, e.pos())
"""
--- end code segment ----------------------------------
More information about the PyQt
mailing list