Question about overriding QAbstractItemModel::mimeData()
-
The argument to this function is
const QModelIndexList &indexes, and the return value is a pointer toQMimeData.If there is more than one
QModelIndexin the list, obviously I must somehow make a list or an array of the correspondingQMimeDatadata elements before returning from this function.So my question is this: What is the expected format of the object behind the
QMimeDatapointer? Is it an array, or a single object?If it is an array, do I have to delimit it with a "null" (or default initialized)
QMimeDataobject?
If it is a single object, I assume that I must somehow stream the data for ALL theQModelIndex's into aQByteArray(or perhaps aQJsonDocumentand export that as aQByteArray)?What if I have a custom view and some columns hold text, while others might hold images? Does all of this data have to fit into a single object of type
QMimeDataassuming, e.g. that I select several rows of two columns each (with different types of data) and try to drag them to a different widget?The documentation could perhaps be a little more specific here.
-
Hi,
It is whatever you need to pass your data around. The receiving class must be able to decode it.
One interesting example for big data structure is the Qt 4.8 Drag And Drop delayed encoding example.
-
Hi,
It is whatever you need to pass your data around. The receiving class must be able to decode it.
One interesting example for big data structure is the Qt 4.8 Drag And Drop delayed encoding example.
@sgaist : Thanks ... I realized just now that the documentation of this function becomes quite clear when one looks at the source code of
QAbstractItemModel::mimeData()in the file"../qtbase/src/corelib/itemmodels/qabstractitemmodel.cpp"at line 1936.It even says "Returns an object (...)" -- i.e., all one really needs to know.