QDirIterator和Windows快捷方式

时间:2014-07-29 15:53:35

标签: c++ qt mingw

我正在尝试使用MinGW 4.8.1为Windows交叉编译的QT 5.1应用程序找到用户桌面上的快捷方式。

我的代码段

QFileInfoList result;

QDir userDesktopDir = userDesktopDirectory();
if (userDesktopDir.exists())
{
    QDirIterator userDesktopIterator(userDesktopDir.absolutePath(),
        QStringList() << "*.lnk",
        QDir::Files | QDir::Hidden | QDir::System,
        QDirIterator::Subdirectories);

    while (userDesktopIterator.hasNext())
    {
        QFileInfo shortcut(userDesktopIterator.next());
        if (!result.contains(shortcut))
        {
            result.append(shortcut);
        }
    }
}

在wine中运行时工作正常,但在Windows上运行时省略所有快捷方式。

userDesktopDirectory()的结果正确地指向C:\ Users \ MyUserName \ Desktop。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

代码工作正常,但需要注意的是Windows将桌面上显示的文件从多个位置合并,例如

  • %USERPROFILE%\Desktop
  • %ALLUSERSPROFILE%\Desktop
  • %PUBLIC%\Desktop