【问题标题】:QFileInfo::isExecutable() returns false for ".exe" fileQFileInfo::isExecutable() 为“.exe”文件返回 false
【发布时间】:2016-04-16 13:20:52
【问题描述】:

我正在尝试允许将 .exe 单元测试文件拖放到 QMainWindow 中。我的dragEnterEvent 看起来像这样:

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 的答案看起来好像任何带有 .exe 扩展名的文件都应该返回 true,那么为什么 QFileInfo::isExecutable() 返回 false?

【问题讨论】:

  • 请注意,只有在 Windows 上,文件名才表示可执行性(.exe、.com)。在其他系统上,例如 UNIX,文件是否可执行与其名称无关,而是一个单独的标志。仅供参考。

标签: c++ qt drag-and-drop qfileinfo


【解决方案1】:

尽管QFileInfo info(e->mimeData()->urls().first().fileName() 似乎为可执行文件提供了有效的QFileInfo,但它实际上并没有完全正常工作。

使用toLocalFile() 而不是fileName() 解决了这个问题。

【讨论】:

    猜你喜欢
    • 2012-04-25
    • 2015-05-05
    • 2014-07-28
    • 1970-01-01
    • 1970-01-01
    • 2013-12-10
    • 2016-01-03
    • 2015-09-21
    • 2017-04-23
    相关资源
    最近更新 更多