2013-02-15 7 views

Antwort

31

Überlastung dragEnterEvent() und dropEvent() in Ihrer MainWindow Klasse und rufen setAcceptDrops() im Konstruktor:

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

danke, dass Sie sich die Mühe gemacht haben, den Code zu schreiben! –

+0

Gern geschehen.Ich habe keinen Code geschrieben, sondern copypasted von meiner Quelle))) – borisbn

+1

Nur ein Hinweis: Ich musste auch die 'MainWindow :: dragMoveEvent()' Methode überschreiben, in der ich nur 'acceptProposedAction()' war die Veranstaltung. Sonst würde es nicht für mich funktionieren. – Ancurio

3

erhielt ich den gesamten Code in diesem Link: Drag and Drop files into your application. Sie können eine .zip von dieser Seite herunterladen.

Der Code für mich perfekt gearbeitet, das einzige, was ich tun sollte, dass Code Arbeit zu machen war in meinem mainwindow.h enthalten:

#include <QMimeData>

Das ist alles, ich hoffe, es kann dir helfen.

Verwandte Themen