[Qt-interest] Trouble making ListView accepting drops

Nathan Hüsken nathan.huesken at posteo.de
Tue Oct 11 09:52:30 CEST 2011


Hey,

I am just realizing that indeed, I did not look at that example close
enough. I did not realize that puzzle pieces can be moved back to the stack.
Looking closer at the example, I found out that I did not return

Qt::ItemIsDropEnabled;

in the flags function when the item is not valid.
That helped!!!

Thanks!
Nathan

On 10/11/2011 07:00 AM, Girish Ramakrishnan wrote:
> Have you seen the puzzle example -
> http://doc.qt.nokia.com/latest/draganddrop-puzzle.html ?
> 
> Girish
> 
> On Mon, Oct 10, 2011 at 4:25 PM, Nathan Hüsken <nathan.huesken at posteo.de> wrote:
>> Bump.
>>
>> Sorry, but I still can not get it to work.
>> Anyone knows a code example where elements can be copied from one list
>> view to another per drag and drop?
>>
>> Thanks!
>>
>> On 10/05/2011 01:19 PM, Nathan Hüsken wrote:
>>> Hi,
>>>
>>> I have two list views. The first (ImageList) is a list of images, the
>>> second (ReferencesList) is a list of references to these images. The
>>> first has the model ImageListModel, the second the model
>>> ReferencesListModel.
>>>
>>> Now I want to enable drag and drop, dragging images from the first
>>> listview to the second to create a new reference.
>>>
>>> In the constructor of the main window I do this to enable drag and drop:
>>>
>>> imageList->setDragEnabled(true);
>>> referencesList->setAcceptDrops(true);
>>> referencesList->setDropIndicatorShown(true);
>>>
>>> Also, I added the code, listed below, to enable drag and drop for the lists.
>>> Now, dragging an element from the imageList works, but when I drag it
>>> over the referencesList, the icon indicates I can not drop it here.
>>>
>>> What am I missing?
>>> Thanks!
>>>
>>> This is the relevant code I added to the models:
>>> -------------------------- ImageListModel.cpp------------------------
>>> Qt::DropActions ImageListModel::supportedDragActions() const {
>>>   return Qt::CopyAction;
>>> }
>>>
>>> const QPixmap ImageListModel::getThumbnail(const QString& name) const {
>>>   return m_images.find(name)->second.m_thumbnail;
>>> }
>>>
>>> Qt::ItemFlags ImageListModel::flags(const QModelIndex& index) const {
>>>    Qt::ItemFlags defaultFlags = QAbstractListModel::flags(index);
>>>    if (index.isValid())
>>>      return Qt::ItemIsDragEnabled | defaultFlags;
>>>    else
>>>      return defaultFlags;
>>> }
>>>
>>> QStringList ImageListModel::mimeTypes() const
>>> {
>>>   QStringList types;
>>>   types << "application/image.name";
>>>   return types;
>>> }
>>>
>>> QMimeData *ImageListModel::mimeData(const QModelIndexList &indexes) const {
>>>      QMimeData *mimeData = new QMimeData();
>>>      QByteArray encodedData;
>>>
>>>      QDataStream stream(&encodedData, QIODevice::WriteOnly);
>>>
>>>      foreach (QModelIndex index, indexes) {
>>>          if (index.isValid()) {
>>>              QString text = m_imageNames[index.row()]; // Image name
>>> contains the names of the images and is supposed to be used for reference
>>>              stream << text;
>>>          }
>>>      }
>>>      mimeData->setData("application/image.name", encodedData);
>>>      return mimeData;
>>>  }
>>>
>>> ----------------------------ReferecesListModel.cpp---------------------
>>> QStringList ReferencesListModel::mimeTypes() const {
>>>   QStringList types;
>>>   types << "application/image.name";
>>>    return types;
>>> }
>>>
>>> Qt::DropActions ReferencesListModel::supportedDropActions() const {
>>>   return Qt::CopyAction;
>>> }
>>>
>>> bool ReferencesListModel::dropMimeData(const QMimeData *data,
>>> Qt::DropAction action, int row, int column, const QModelIndex &parent) {
>>>   // Not implemented yet
>>>   return true;
>>> }
>>> _______________________________________________
>>> Qt-interest mailing list
>>> Qt-interest at qt.nokia.com
>>> http://lists.qt.nokia.com/mailman/listinfo/qt-interest
>>
>> _______________________________________________
>> Qt-interest mailing list
>> Qt-interest at qt.nokia.com
>> http://lists.qt.nokia.com/mailman/listinfo/qt-interest
>>




More information about the Qt-interest-old mailing list