Qt 文档“Mac 的差异”页面提供了以下用于访问应用程序的捆绑路径的代码:
CFURLRef appUrlRef = CFBundleCopyBundleURL(CFBundleGetMainBundle());
CFStringRef macPath = CFURLCopyFileSystemPath(appUrlRef, kCFURLPOSIXPathStyle);
const char *pathPtr = CFStringGetCStringPtr(macPath,CFStringGetSystemEncoding());
qDebug("Path = %s", pathPtr);
CFRelease(appUrlRef);
CFRelease(macPath);
然而,与更简单的东西相比,它有什么优点,如下所示:
QDir dir = QDir(QCoreApplication::applicationDirPath());
dir.cdUp();
dir.cdUp();
return dir;
切勿使用第一个代码。正如 Qt 文档中所写,它可能无法在非英语环境中工作,因为文件名编码不是由CFStringGetSystemEncoding()
,它返回用户的主要非 unicode 编码。相反,文件名始终由 UTF8 编码(有一个细微的变体。)
const char *pathPtr = CFStringGetCStringPtr(macPath, kCFStringEncodingUTF8);
更准确地说,您需要使用CFStringGetFileSystemRepresentation.
QCoreApplication::applicationDirPath()
(大部分)正确地考虑到了这些微妙之处,因此如果您希望您的应用程序在非英语 Mac 上运行,您应该使用后一种方法。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)