Trying to implement drag and drop for QAbstractItemModel
maurizio.berti at gmail.com
Tue Apr 20 12:08:37 BST 2021
> You seem to be talking about the possibility of *changing* the chosen
> format to a different one but still supporting a single format, but I am
> talking about mimeTypes() returning a list with *more* than one type,
> making the model have to support multiple formats at the same time. It's
> not clear to me how to do that in mimeData(), dropMimeData() and QMimeData.
> In that scenario, it sounds like mimeData() would have to produce MIME
> data in multiple formats, and dropMimeData would have to support data in
> multiple formats. For one thing, it's not clear how to check the format of
> a QMimeData object. For another, it isn't clear how mimeData() can return a
> single QMimeData while supporting multiple formats.
I'm not sure I'm understanding your question.
QMimeData is a container of data, stored in multiple fields identified by
their "format", the assumption is that a format identifier always has the
same data format specification (so, x-qabstractitemmodeldatalist should
always have the structure described above, but nobody stops you to do
Let's suppose you have a list model with a series of urls and number of
visits, and you want to allow both internal d&d, but also custom data
format that includes the list as url/visits pairs, and standard OS support
for those URLs:
def mimeData(self, indexes):
mimeData = super().mimeData(indexes)
urlList = 
ba = QByteArray()
stream = QDataStream(ba, QIODevice.WriteOnly)
for index in indexes:
url, visits = self.urls[index.row()]
In this case, we have the current base implementation of mimeData (which is
compliant with the Qt model d&d features), the url format used for
browsers, *and* another custom "mime format" that we could use in this
model or any widget/model that could be interested in such a format.
def dropEvent(self, event):
while not stream.atEnd():
url = stream.readQString()
visits = stream.readInt()
I hope I've understood what you were asking.
È difficile avere una convinzione precisa quando si parla delle ragioni del
cuore. - "Sostiene Pereira", Antonio Tabucchi
-------------- next part --------------
An HTML attachment was scrubbed...
More information about the PyQt