【问题标题】:Get relative path from a file in Qt从 Qt 中的文件获取相对路径
【发布时间】:2014-07-22 18:37:34
【问题描述】:

我正在尝试从我想写入的文件中获取相对路径。这里有一个情况:

我在D:\confs\conf.txt 中保存了一个conf 文件。我的程序中有一些从D:\images\image.bmp 读取的文件。在我的conf.txt 中,我想要../images/image.bmp

我看到了一些有用的类,例如 QDirQFileInfo,但我不知道什么是最好用的。我试过了:

QDir dir("D:/confs");
dir.filePath(D:/images/image.bmp) // Just return the absolute path of image.bmp

我阅读了文档,它说filePath 仅适用于目录集中的文件(此处为D:\confs),但我想知道是否有办法指示从不同的目录搜索并获取他的相对路径。

【问题讨论】:

    标签: c++ qt qtcore qdir qfileinfo


    【解决方案1】:

    您正在寻找以下方法:

    QString QDir::relativeFilePath(const QString & fileName) const

    返回文件名相对于目录的路径。

    QDir dir("/home/bob");
    QString s;
    
    s = dir.relativeFilePath("images/file.jpg");     // s is "images/file.jpg"
    s = dir.relativeFilePath("/home/mary/file.txt"); // s is "../mary/file.txt"
    

    根据上面的示例调整您的代码,它将如下所示:

    QDir dir("D:/confs");
    dir.relativeFilePath("D:/images/image.bmp") // Just return the absolute path of image.bmp
    //           ^                   ^
    

    总体而言,您所做的可能不是一个好主意,因为它将配置和图像路径耦合在一起。 IE。如果您移动其中任何一个,应用程序将停止工作。

    还请注意缺少的引号。

    【讨论】:

    • 感谢它的伟大工程。我应该更仔细地阅读有关 QDir 的文档。我知道这可能有风险,但可以为其他计算机导出 conf,因此如果同时导出 conf 文件夹和图像(尊重它们的相对路径),应用程序不会崩溃。
    【解决方案2】:
    QDir dir("D:/confs");
    dir.relativeFilePath("D:/images/image.bmp");
    

    【讨论】:

      猜你喜欢
      • 2018-11-11
      • 2019-05-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-31
      • 1970-01-01
      • 1970-01-01
      • 2017-04-21
      相关资源
      最近更新 更多