Qt - 访问包路径

2023-12-05

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(使用前将#替换为@)

Qt - 访问包路径 的相关文章

随机推荐

  • 为什么不允许“SplFileInfo”序列化?

    我正在尝试存储一个数组SplFileInfo缓存中的实例serialize命令 但该命令抛出此异常 Exception with message Serialization of SplFileInfo is not allowed 为什么
  • Pygame:画线

    在我之前的问题中Python 中的 For 循环函数 我在放置包含为刽子手游戏画线的命令的函数时遇到了麻烦 它并没有完全划清界限 我首先怀疑这是 for 循环或函数的问题 现在我意识到 Pygame 存在一些问题 我尝试在加拿大国家使用此代
  • PDO:用bindvalue和%来准备

    我在各个网站上查看了一个多小时 但无法解决我的问题 所以这是有效的代码 animes array q this gt db gt query SELECT id nom nom id FROM animes WHERE nom LIKE c
  • django 1.11.4 中的错误('datetime.datetime'对象没有属性'split')

    我正在通过官方文档上的教程学习 django 版本 1 11 4 我使用 python 3 6 5 和 mysql8 作为数据库 我还使用 mysql connector django 连接到 mysql 数据库 我尝试制作第一个 Djan
  • 正则表达式。查找包含某个单词的段落

    在这样的文本中 p 1 bla bla em bla em bla bla p p 2 bla bla em bla em bla TEXT bla p p 3 bla bla em bla em bla bla p p 4 bla bla
  • Google App Engine - 单个数据存储大约使用多少配额?

    数据存储放入的延迟约为 150 毫秒 http code google com status appengine detail datastore 2010 03 11 ae trust detail datastore put laten
  • 尝试使用 C# ado,net 将行插入到 sql server 数据库

    我正在尝试在控制台应用程序中使用 Ado Net 在 SQL Server 数据库中插入一行 我正在从键盘读取输入 这是我的代码 private void InsertStudents string con SqlConnection Co
  • Spring + JPA + Hibernate

    我是春天的新手 我正在尝试使用 Spring 3 1 3 和 JPA 2 0 设置简单的 Web 应用程序 我已将所有必需的库添加到 WEB INF lib 中 启动过程中没有错误 但我的 DaoImpl 文件中的entityManager
  • 从项目目录内的文件夹中读取文件

    在 JSP 项目中 我正在从目录中读取文件 如果我给出完整路径 那么我可以轻松读取该文件 BufferedReader br new BufferedReader new FileReader C ProjectFolderName fil
  • for(;;)循环解释

    在 JS 中 我偶然发现了一种 for 循环 它是for 其功能类似于while true 环形 for 循环括号中的分号起什么作用 for statement 1 statement 2 statement 3 code block to
  • scikit-learn 中每个数据分割的交叉验证指标

    我需要为 X test y test 数据的每个分割显式获取交叉验证统计信息 因此 为了尝试这样做 我做了 kf KFold n splits n splits X train tmp y train tmp X test tmp y te
  • 带有辅助工具提示的 EditText

    我在 iPhone 上有这个应用程序 我想使其适用于 Android 在 iPhone 上 当开始在 EditText 中编辑文本时 显示屏顶部会显示带有消息的工具提示 我想让它也适用于 Android 但我没有找不到任何有帮助的东西 这里
  • 如何在c#项目中使用c++ dll? [复制]

    这个问题在这里已经有答案了 可能的重复 在 C 应用程序中使用 C 类 DLL 我尝试在 c 中添加引用以添加 c dll 失败 如果您有任何其他方法在 c 中添加或使用 c dll 我们该如何使用 我在 C 项目中添加 dll 的错误在哪
  • Visual Basic 6 中 Shell 进程的标准输出读取

    首先 我要声明我不是 Visual Basic 6 专家 我的需要是 从 VB6 客户端代码启动外部 exe 文件 等待该过程完成 并在执行期间 即时 读取来自其标准输出的消息 以便我可以将其打印在文本文件小部件或类似部件上 我想知道是否有
  • 带有本地 docker 的 Jenkins 服务器

    我的 CI 实施有问题 我安装了 Jenkins 服务器并创建了构建管道 来自本教程 https getintodevops com blog building your first docker image with jenkins 2
  • php 邮件附件

    我一直在使用这个脚本向某些员工发送电子邮件 但由于我的系统发生了变化 我现在必须随电子邮件发送附件 并且我已经尝试了多种代码来完成此操作 但没有成功 我仍然收到电子邮件 但没有附件 在这种情况下毫无意义 我已将我正在使用的脚本放在下面 我已
  • 我可以使用 C++ 程序之外的随机内存地址访问随机数据吗

    如果有两个程序正在运行 其中一个程序在某个内存地址存储一个数字 如果我知道该内存地址 并将其硬编码到第二个程序中并打印出该地址处的值 它实际上会得到该信息吗 C 是否允许程序访问 RAM 中存储的任何数据 无论它是否是程序的一部分 在没有虚
  • CSS 负边距定位

    使用负边距进行定位可以吗 我当前的网站中有很多内容 感觉这不是一种稳定的定位方式 我通常也建议使用它们 例如 我有一个结账页面 其中三个 div 彼此叠置 div class A header div div class B content
  • 为什么 Skylake 在单线程内存吞吐量方面比 Broadwell-E 好很多?

    我们有一个简单的内存吞吐量基准 它所做的只是对一大块内存重复进行memcpy 查看几台不同机器上的结果 针对 64 位编译 Skylake 机器的表现明显优于 Broadwell E 操作系统 Win10 64 处理器速度和 RAM 速度
  • Qt - 访问包路径

    Qt 文档 Mac 的差异 页面提供了以下用于访问应用程序的捆绑路径的代码 CFURLRef appUrlRef CFBundleCopyBundleURL CFBundleGetMainBundle CFStringRef macPath