[Qt-interest] QTreeView Drag&Drop issue

David Boosalis david.boosalis at gmail.com
Fri Aug 14 19:20:24 CEST 2009


Sorry for not understanding,

In mouseMoveEvent() I got something to work (replace the  "+" pixmap)
, but not very robust.

...
QPixmap pm(myPixmap);
drag = new QDrag(this);
..
drag->setDragCursor(pm,Qt::CopyAction)

Does not with all pimxaps. For instance did not work with a null
pixmap, nor did it work with:

QPixmap pm = QCursor(Qt::PointingHandCursor).pixmap();

With a valid png pixmap it does work, so maybe make your own "pointer"
pixmap and use the setDragCursor() as above.



On Fri, Aug 14, 2009 at 9:07 AM, Murphy, Sean M.<sean.murphy at gd-ais.com> wrote:
>>  drag = new QDrag(this);
>>   drag->setPixmap(myPixmap);
>>
>> This gives me the "+" along with my icon.
>
> The original poster DOESN'T want the "+" icon.  He's trying to move an existing item from one spot in the list to another spot on the list.  He's not trying to drop a brand new item onto the list and add it.  However when he starts dragging the existing item to move it, the drag/drop system modifies the cursor to include the "+" icon, which he feels is confusing to his users since they aren't really adding a new item, they are just moving an existing item.
>
> Sean
>
>> What about the Qt demo codes, there must be a drag & drop example
>> there.  Do these work on your system ?
>>
>>
>>
>>
>> On Thu, Aug 13, 2009 at 5:39 PM, Sylvain
>> Pointeau<sylvain.pointeau at gmail.com> wrote:
>>> Hi David,
>>> Thanks for your answer,
>>> I have absolutely no problem in my code, I am using a abstractModel
>>> with my QTreeView but the thing is that the cursor is always the
>>> icon
>>> (+) even if I press the key "CMD" (to only move the item) this bug
>>> is really annoying as it show a bad indication to the users ...
>>> do you see what I mean?
>>> Cheers,
>>> Sylvain
>>> On Fri, Aug 14, 2009 at 2:22 AM, David Boosalis
>>> <david.boosalis at gmail.com>
>>> wrote:
>>>>
>>>> I have the used the following code to accept drag & drop,
>>>> somethings may not make sense to youas they relate to my code, but
>>>> it may give you some clues as to your problem.
>>>>
>>>> -David
>>>>
>>>> PS - if still having trouble, paste some of your code in a email
>>>>
>>>> setDragDropMode(QAbstractItemView::DragDrop);
>>>> setDropIndicatorShown(true);
>>>> ...
>>>>
>>>> /********************************************************************
>>>> */ void MyTreeWidget::dragEnterEvent( QDragEnterEvent *de) {
>>>>  qDebug("Drage Enter Event....");  if
>>>> (de->mimeData()->hasFormat("Student")) {    qDebug("Accept drag event
>>>> ....");    dragMode = MyEnumValue;    de->acceptProposedAction();  }
>>>>  else    qDebug("DO NOT ACCEPT"); }
>>>>
>>>> /********************************************************************
>>>> */ void MyTreeWidget::dragMoveEvent(QDragMoveEvent *dm) {
>>>>  dm->acceptProposedAction(); }
>>>>
>>>> /********************************************************************
>>>> */ void MyTreeWidget::dropEvent(QDropEvent *event) {  QStringList
>>>> strList;  QString str;  bool okay;
>>>>
>>>>
>>>>  QByteArray byteArray;
>>>>  const QMimeData *mimeData;
>>>>  .....
>>>>  // if (event->proposedAction() == Qt::CopyAction) {
>>>>  event->acceptProposedAction();
>>>>  mimeData = event->mimeData();
>>>>  if (mimeData == 0) {
>>>>      qWarning("Invalid drop - mime data = 0");
>>>>      return;
>>>>  }
>>>>  if (mimeData->hasFormat("Student")) {
>>>>
>>>>    byteArray = mimeData->data("Student");
>>>>    QDataStream ds(&byteArray,QIODevice::ReadWrite);
>>>>
>>>>    ds >> studentList;
>>>>    emit droppedStudents(studentList);
>>>>  }
>>>>  QTreeWidget::dropEvent(event);
>>>>
>>>>
>>>> On Thu, Aug 13, 2009 at 3:54 PM, Sylvain
>>>> Pointeau<sylvain.pointeau at gmail.com> wrote:
>>>>> Hello,
>>>>> I have an issue on the drag and drop for a tree view on Macosx
>>>>> The cursor is always a (+) even if we only move an item (with CMD
>>>>> pressed (should be alt by the way)) what should I do for this bug
>>>>> to be solved?
>>>>> Cheers,
>>>>> Sylvain
>




More information about the Qt-interest-old mailing list