2013-02-15 5 views

risposta

31

sovraccarico dragEnterEvent() e dropEvent() nella classe MainWindow, e chiamare setAcceptDrops() nel costruttore:

MainWindow::MainWindow(QWidget *parent) 
{ 
    .......... 
    setAcceptDrops(true); 
} 

void MainWindow::dragEnterEvent(QDragEnterEvent *e) 
{ 
    if (e->mimeData()->hasUrls()) { 
     e->acceptProposedAction(); 
    } 
} 

void MainWindow::dropEvent(QDropEvent *e) 
{ 
    foreach (const QUrl &url, e->mimeData()->urls()) { 
     QString fileName = url.toLocalFile(); 
     qDebug() << "Dropped file:" << fileName; 
    } 
} 
+0

grazie per aver preso tutto il dolore per scrivere il codice! –

+0

Prego. Non ho scritto codice, ma copypasted dalla mia fonte))) – borisbn

+1

Solo una nota: ho dovuto sovrascrivere il metodo 'MainWindow :: dragMoveEvent()' in cui ho solo 'acceptProposedAction()' 'l'evento. Altrimenti non funzionerebbe per me. – Ancurio

3

Ho ottenuto l'intero codice in questo collegamento: Drag and Drop files into your application. Puoi scaricare un .zip da questa pagina.

Il codice ha funzionato perfettamente per me, l'unica cosa che devo fare per far funzionare il codice è stato quello di includere nel mio mainwindow.h:

#include <QMimeData>

Questo è tutto, spero che possa Aiutarti.