使用Qt从Mac上的应用程序文件夹读取应用程序列表
我想使用Qt或Carbon从Mac上的应用程序文件夹中读取应用程序列表。 我不知道该怎么做。因此,任何指点都将受到赞赏 谢谢使用Qt从Mac上的应用程序文件夹读取应用程序列表,qt,macos,macos-carbon,Qt,Macos,Macos Carbon,我想使用Qt或Carbon从Mac上的应用程序文件夹中读取应用程序列表。 我不知道该怎么做。因此,任何指点都将受到赞赏 谢谢 Rahul您可以使用或中的FSOpenIterator和FSGetCatalogInfoBulk函数列出目录。最简单的解决方案是获取应用程序目录,然后使用Qt帮助程序对其进行迭代-即QDir,并将捆绑包作为名称以“.app”结尾的目录查找。下面是一些从文件夹引用类型获取QDir的代码-有许多类似的常量,用于获取桌面/垃圾箱/库文件夹。“域”值很重要-对于许多文件夹(例如,
Rahul您可以使用或中的FSOpenIterator和FSGetCatalogInfoBulk函数列出目录。最简单的解决方案是获取应用程序目录,然后使用Qt帮助程序对其进行迭代-即QDir,并将捆绑包作为名称以“.app”结尾的目录查找。下面是一些从文件夹引用类型获取QDir的代码-有许多类似的常量,用于获取桌面/垃圾箱/库文件夹。“域”值很重要-对于许多文件夹(例如,库)来说,有每个用户的版本以及全局和网络版本。FileVault会使事情进一步复杂化 FSFindFolder上的文档应该让事情变得更清楚,网上到处都有这样的例子
static QDir applicationsDir()
{
short domain = kOnAppropriateDisk;
FSRef ref;
OSErr err = FSFindFolder(domain, kApplicationsFolderType, false, &ref);
if (err) {
return QDir();
}
return QDir(getFullPath(ref));
}
/*
Constructs a full unicode path from a FSRef.
*/
static QString getFullPath(const FSRef &ref)
{
QByteArray ba(2048, 0);
if (FSRefMakePath(&ref, reinterpret_cast<UInt8 *>(ba.data()), ba.size()) == noErr)
return QString::fromUtf8(ba).normalized(QString::NormalizationForm_C);
return QString();
}
没有一个真正的应用程序文件夹/应用程序有子文件夹,人们可以将其应用程序放在任何地方,包括~/应用程序。我把我的放在另一个分区上。你可以考虑使用聚光灯来代替。