Seite 1 von 1

Mausetaste losgelassen->dropEvent erst nach Maus verschie

Verfasst: 12. Mai 2009 14:37
von mikemc
Aus einem QTreeView wird eine Drag&Drop Aktion gestartet, und auf einem QGraphicsItem aufgefangen.

Manchmal entsteht der Effekt, dass dropEvent erst aufgerufen wird, wenn man nochmal ganz wenig die Maus verschiebt.

Hier starte ich die Drag&Drop Aktion:

Code: Alles auswählen

void TreeView::mouseMoveEvent( QMouseEvent *event)
{        
     QTreeView::mouseMoveEvent(event);

     if (!(event->buttons() & Qt::LeftButton))
         return;
     if ((event->pos() - _dragStartPosition).manhattanLength()
             < QApplication::startDragDistance())
         return;

     QModelIndex Index = currentIndex();
     TreeModel* treemodel = (TreeModel*) model();    

     if ( itemID.isValid() )
     {
         QDrag *drag = new QDrag( this );
         QMimeData *mimeData = new QMimeData;
         drag->setMimeData( mimeData );
         drag->exec( );
     }
}
Drop-Aktion:

Code: Alles auswählen

void MeinGraphicItem::dropEvent ( QGraphicsSceneDragDropEvent * event )
{      
    QString MimeText;   
    const QMimeData * pMimeData = event->mimeData();
    if ( pMimeData->hasText())
    {
        MimeText = pMimeData->text();
    }

    {
    QStringList DataList = MimeText.split ( ";" );
    ... 
    QGraphicsItem::dropEvent ( event );
}