【问题标题】:Cross-platform way of constructing an FS path with Qt [duplicate]使用Qt构建FS路径的跨平台方式[重复]
【发布时间】:2011-03-12 19:18:25
【问题描述】:

可能重复:
Qt equivalent of PathAppend?

简短的故事:Qt 4 是否有 Python 的 os.path.join 的类似物?

长话短说:我需要在 Right Way (TM) 中添加应用程序目录的相对路径 QCoreApplication::applicationDirPath(),以便代码不依赖于文件系统目录分隔符。

仅仅加入QStrings并使用“/”作为分隔符是一个好的解决方案吗?

【问题讨论】:

  • 为什么不使用QDir 或类似的?
  • 因为我没有看到完全符合我需要的 QDir 方法。您能否更具体地说明您的建议?
  • 运算符重载可能会被滥用,但路径重载operator/ 则不然。 QCoreApplication::applicationDirPath() / "MySubDir" 是完全合理的代码。可惜 Qt4 没有。
  • 方法 QChar separator() 至少会给你需要使用的分隔符

标签: c++ qt filesystems portability


【解决方案1】:

您可以直接使用“/”或使用QDir::separator()。但通常为此使用QDir(它将“/”转换为平台特定的路径分隔符)。

【讨论】:

    【解决方案2】:

    来自 Qt 4.6 QDir 文档,

    Qt 使用“/”作为通用目录分隔符,就像在 URL 中使用“/”作为路径分隔符一样。如果您总是使用“/”作为目录分隔符,Qt 将转换您的路径以符合底层操作系统。

    所以,我想QDir 会对你有所帮助。

    【讨论】:

    • +1 用于文档。无论如何,/ 是一个非常通用的分隔符。它在 POSIX、Mac OS 上是默认的,并且被 Windows(官方)支持。
    【解决方案3】:

    停留在 Qt 世界时只需使用“/”。 要转换非 Qt 类和函数等的路径,请使用 QDir::toNativeSeparators( path )。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-03-15
      • 1970-01-01
      • 2011-05-29
      • 2012-03-26
      • 2019-04-27
      • 1970-01-01
      • 2014-07-11
      • 2021-05-08
      相关资源
      最近更新 更多