2016-04-16 8 views
0

.exeユニットテストファイルのドラッグ&ドロップをQMainWindowに許可しようとしています。私dragEnterEventは、次のようになります。QFileInfo :: isExecutable()は ".exe"ファイルに対してfalseを返します

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();  
    } 
} 

isExecutable()機能が.exeファイルの場合はfalseを返しますが。

ファイルへのアクセス権があります。infoのファイルパスが正しく実行可能ファイルを指していることを確認しました。

this questionへの答えは、それがtrueを返す必要が.exeの拡張子を持つ任意のファイルのように思われてしまうので、なぜfalseを返すQFileInfo::isExecutable()のですか?

+0

Windowsではファイル名はexecutableness(.exe、.com)であることに注意してください。 UNIXなどの他のシステムでは、ファイルが実行可能であるかどうかは、その名前とは関係ありませんが、別個のフラグです。ちょうどFYI。 –

答えて

1

QFileInfo info(e->mimeData()->urls().first().fileName()が実行ファイルに対して有効なQFileInfoを与えているように見えましたが、実際には完全には機能していませんでした。

fileName()の代わりにtoLocalFile()を使用して問題を解決しました。

関連する問題