[PyQt] question on drag and drop
bazwal at ftml.net
Tue Oct 19 19:00:26 BST 2010
On 19/10/10 18:13, danny wrote:
> 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
> 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",
> 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:
when your reimplemented mimeTypes() method is called internally by qt,
the first item in the returned list will be used to set the format.
More information about the PyQt