代码之家  ›  专栏  ›  技术社区  ›  Gad D Lord

QT4中有QPath::Combine吗?

  •  10
  • Gad D Lord  · 技术社区  · 16 年前

    QT4中有这样的类和方法吗?

    QPath::Combine
    
    3 回复  |  直到 12 年前
        1
  •  34
  •   Community Mohan Dere    9 年前

    没有任何函数可以直接替代 Path.Combine() 所以你得自己写。

    QDir::cleanPath() :

    QString pathAppend(const QString& path1, const QString& path2)
    {
        return QDir::cleanPath(path1 + QDir::separator() + path2);
    }
    

    我曾经 QDir::separator() Cross-platform way of constructing a FS path with Qt 你并不真的需要它,你只需要使用 / . QDir::cleanPath() 将删除双 / (或双倍) \ ,据 QDir::分隔符() )会解决的 . .. Qt equivalent of PathAppend? 关于QT的代码 PathAppend()

    路径附加() 本机函数(请参阅 MSDN 不是完全的替代品 路径。合并() 路径。合并() 不执行 打扫 或者规范化(它只是附加字符串,以正确的方式处理目录分隔符,请参阅 MSDN ). 如果你需要 精确替换 你可以用这个:

    QString pathCombine(const QString& path1, const QString& path2)
    {
        if (path2.startsWith(QDir::separator()))
            return path2;
    
        return trimEnd(path1, QDir::separator())
            + QDir::separator()
            + trim(path2, QDir::separator());
    }
    

    如果出现下列情况,此函数将不添加尾部目录分隔符 path2 是一个目录名(它不执行任何检查,路径甚至可能根本不存在)。还要注意的是 路径2 必须是的子路径 path1 (相对路径高于 路径1 QDir::cleanPath() ),如果 那是根吗 路径2 发现 c:\directory 作为一条有根的道路)。

    trim() trimEnd() How do I remove trailing whitespace from a QString? 作为起点)。 算法 确保有一个与中描述的相同的尾部目录分隔符 How to ensure there is trailing directory separator in paths? (简化,因为这里我们总是有一个目录分隔符,由 ).

        2
  •  2
  •   Ivo    16 年前

    您可以使用静态方法 QDir::fromNativeSeparators QDir::toNativeSeparators 然后使用 / 在操纵路径时无处不在。

        3
  •  1
  •   Caleb Huitt - cjhuitt    16 年前

    我不知道有什么是这样的,但是你可以用 QDir::cd()

    QDir path("base_path");
    path.cd("subdir");
    

    QDir::filePath() :

    QDir path("base_path");
    QString file_path = path.filePath("file.txt");