[Qt-interest] Trouble making ListView accepting drops

Girish Ramakrishnan girish at forwardbias.in
Tue Oct 11 07:00:42 CEST 2011


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