[Qt-interest] Drag and Drop when source is deleted

Martin Grossberger mgrossberger at andtek.com
Fri May 20 11:04:28 CEST 2011


> Den 19-05-2011 17:54, Martin Grossberger skrev:
>> Hello all,
>>
>> I have an issue with Drag&Drop, with which I hope you can help me:
>> I have subclassed (twice) a QWidget and enabled dragging it. The widget
>> also gets automatically deleted when an event hits.
>> Now, if the widget gets deleted while I am dragging it, I can continue
>> dragging, however once I drop it somewhere, the program crashes. The
>> stacktrace from the debugger is:
>> 0    QDrag::setMimeData    qdrag.cpp    145    0x047eb579
>> 1    QDragManager::drag    qdnd_win.cpp    973    0x0484fa75
>> 2    QDrag::start    qdrag.cpp    314    0x047eb8b6
>> 3    MyCustomWidget::dragEvent    mycustomwidget.cpp    1285    
>> 0x0041ca80
>> 4    MyWidget::mouseMoveEvent    mywidget.cpp    573    0x00526286
>> 5    MyCustomWidget::mouseMoveEvent    mycustomwidget.cpp    1486
>> 0x0041e814
>> 6    QWidget::event    qwidget.cpp    7983    0x0482cee8
>> 7    QApplicationPrivate::notify_helper    qapplication.cpp    4300
>> 0x047e2520
>> 8    QApplication::notify    qapplication.cpp    3865    0x047e0723
>> 9    QCoreApplication::notifyInternal    qcoreapplication.cpp    704
>> 0x6a1fd302
>> 10    QCoreApplication::sendSpontaneousEvent    qcoreapplication.h
>> 218    0x04e36eba
>> 11    QApplicationPrivate::sendMouseEvent    qapplication.cpp    2963
>> 0x047def40
>> 12    QETWidget::translateMouseEvent    qapplication_win.cpp    3230
>> 0x04847f10
>> 13    QtWndProc at 16    qapplication_win.cpp    1623    0x0484309d
>> 14    USER32!IsDialogMessageW    C:\Windows\syswow64\user32.dll    0
>> 0x75fa6238
>> 15    ??        0    0x00141dec
>> 16    ??        0    0x00000200
>> 17    USER32!AllowForegroundActivation
>> C:\Windows\syswow64\user32.dll    0    0x75fa68ea
>> 18    qt_is_translatable_mouse_event    qapplication_win.cpp    1395
>> 0x04842675
>> 19    USER32!GetMessageExtraInfo    C:\Windows\syswow64\user32.dll
>> 0    0x75fa7d31
>> 20    ??        0    0x00000000
>> ...<Mehr>
>>
>> Is there something I can do to prevent the crash (other than deleting
>> the widget)? Did I miss something?
>
> It sounds like you are trying to drag the widget? If that's the case, 
> you have to rewrite this. You have to drag only data, not active objects.
>
> Bo Thorsen,
> Fionia Software.
>
Thanks for your input, I have read about that a while ago and rewrote 
the code so that the QMimeData Object only saves an ID of the widget, 
not a pointer to the actual widget.
However, the program still crashes before I can even check if the widget 
still exists on dropping.

Kind Regards,
Martin Grossberger



More information about the Qt-interest-old mailing list