[PyQt] question on drag and drop
danny
shevitz at lanl.gov
Tue Oct 19 18:13:41 BST 2010
Howdy, I'm trying to impliment DnD in a QTreeView with a custom model
derived from QAbstractItemModel. I have run into the following question.
I want to be able to drag onto the tree from an external source. I also want to
do internal DnD to rearrange items. The mime type of internal drag is
'application/x-qabstractitemmodeldatalist'. My external data has a custom format
'application/x-whatever'. In order for the tree to accept external drops I
have overridden mimetypes() to return
['application/x-qabstractitemmodeldatalist','application/x-whatever'].
The problem is that if when I do internal dnd, The mimetype seems to be
'application/x-whatever', not 'application/x-qabstractitemmodeldatalist' like
I would expect. As a result, I can't tell the drag types apart.
Can anyone please enlighten me as to what I am doing wrong?
I'm don't really have working code, but the following snippets at least show
what I am trying. ( also tried types = types = ["application/x-whatever", ]
and this behaves exactly the same. If I take out the mimeTypes function, then
I can't do the external drop onto the tree.)
def mimeTypes(self):
types = ["application/x-whatever",
'application/x-qabstractitemmodeldatalist']
return types
def dropMimeData(self, data, action, row, column, parent):
# AT THIS POINT THE DATA IS ALWAYS 'application/x-whatever'
# EVEN FOR INTERNAL DROPS
if data.hasFormat('application/x-whatever'):
if action==Qt.MoveAction:
...
thanks,
Danny
More information about the PyQt
mailing list