linux - Linux 和 Mac OS X 的共享数据位置

标签 linux macos qt application-data

在 Windows 上,应用程序数据有一个标准位置,该位置与机器上的所有用户共享(即在 Vista/7 中,(root):\ProgramData)。我正在寻找一种使用 Qt 在其他平台上获取此类文件夹的方法。

  • Qt 是否提供内置方法来执行此操作? (QDesktopServices 看起来很有希望,但似乎没有提供此选项。)
  • 如果不是,Linux 和 Mac OS X 系统上共享应用程序数据的标准位置是什么? /usr/share 是正确的地方吗?有标准吗?

[澄清]这是针对可变数据的。

最佳答案

我不知道 Qt 是否为此提供了 API。这是 OS X 的特定信息。

在 OS X 上,这取决于它是 GUI 应用程序还是 unix 级别的支持库。对于 GUI 应用程序,标准做法是让所有用户在应用程序包本身内共享所有只读数据。通常你有

  YourApp.app/
  YourApp.app/Contents
  YourApp.app/Contents/MacOS
  YourApp.app/Contents/MacOS/YouApp      .... this is the binary
  YourApp.app/Contents/Resources/        .... here are all the shared data

GUI 将目录 YourApp.app 呈现为应用程序本身,因此您可以毫无问题地复制/移动它。 如果不行,建议使用

的子目录
/Library/Application Support/name_of_your_app/

用于用户之间共享的数据。

在一台机器上的用户之间拥有可变的、共享的数据是个坏主意;一般来说,由于访问限制,这是不可能的。请注意,标准用户可能没有,实际上通常没有写入共享位置的管理权限。

对于特定于用户的可变数据,使用

~/Library/Application Support/name_of_your_app/

参见 this Apple guideline了解更多信息。

关于linux - Linux 和 Mac OS X 的共享数据位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3480399/

相关文章:

qt - 如何让 QGraphicsItem 在 QGraphicsScene 中显示背景?

c++ - QML - 不支持命令式代码

qt - 覆盖文本文件与追加

linux - 为什么我可以在不包含头文件的情况下进行 fork

在 Java 中创建按钮事件时发生 Java 运行时错误

c - 如何从密文中获取ciphertext_len以在c程序中的openssl EVP_中使用

python - 在 mac 上安装 mongo-edu 时出错

macos - Mac 应用程序中的“确定”警报按钮不起作用

c - linux c中的串行通信

objective-c - 让NSSlider以其他方式移动?