2016-04-16 7 views
0

Ich versuche, Drag-and-Drop von .exe Einheitentestdateien in eine QMainWindow zuzulassen. Mein dragEnterEvent sieht wie folgt aus:QFileInfo :: isExecutable() gibt false für die Datei ".exe" zurück.

void MainWindow::dragEnterEvent(QDragEnterEvent *e) 
{ 
    if (e->mimeData()->hasUrls()) 
    { 
     QFileInfo info(e->mimeData()->urls().first().fileName()); // this works 
     if (info.isExecutable()) // false for .exe?? 
      e->acceptProposedAction();  
    } 
} 

jedoch die isExecutable() Funktion für EXE-Dateien false zurückgibt.

Ich habe Berechtigungen für die Datei, und ich habe überprüft, dass der Dateipfad von info korrekt auf die ausführbare Datei verweist.

Die Antwort auf this question macht es mit den EXE-Erweiterungen wie jede Datei erscheinen sollte true zurückkehren, also warum ist QFileInfo::isExecutable() falsche Rückkehr?

+0

Beachten Sie, dass der Dateiname nur unter Windows die Ausführbarkeit (.exe, .com) angibt. Auf anderen Systemen, wie z. B. UNIX, hat eine ausführbare Datei nichts mit ihrem Namen zu tun, sondern ist ein separates Flag. Nur zu deiner Information. –

Antwort

1

Obwohl QFileInfo info(e->mimeData()->urls().first().fileName() erschien, um eine gültige QFileInfo für die ausführbare Datei zu geben, war es nicht wirklich voll funktionsfähig.

Mit toLocalFile() anstelle von fileName() löste das Problem.

Verwandte Themen