在Qt中区分文件路径和url

在Qt中区分文件路径和url,qt,qurl,Qt,Qurl,如果我有一个字符串,它可以是文件或URL,有没有任何现有的聪明方法可以用来区分它们 例如: /用户/user/Documents/mydoc.txt->path c:\ProgramFiles\myapp\mydoc.doc->path ->url ->url 这是为了加载设计器UI文件,所以我需要制作远程文件的本地临时副本。 因此,底线是知道何时需要下载该文件 您可以使用给定的名称创建一个QFile,并检查它是否存在()。如果不尝试将字符串解析为URL。那么,您可能需要用这些字符串构造一个

如果我有一个字符串,它可以是文件URL,有没有任何现有的聪明方法可以用来区分它们

例如:

  • /用户/user/Documents/mydoc.txt->path
  • c:\ProgramFiles\myapp\mydoc.doc->path
  • ->url
  • ->url
这是为了加载设计器UI文件,所以我需要制作远程文件的本地临时副本。
因此,底线是知道何时需要下载该文件

您可以使用给定的名称创建一个
QFile
,并检查它是否存在()。如果不尝试将字符串解析为URL。

那么,您可能需要用这些字符串构造一个
QUrl
对象,并验证这些URL是否引用本地文件。即:

static bool isLocalFile(const QString &str)
{
    return QUrl::fromUserInput(str).isLocalFile();
}
用你的弦

QString s1("/Users/user/Documents/mydoc.txt");
QString s2("c:\\Program Files\\myapp\\mydoc.doc");
QString s3("https://mywebsite.com/mydoc.txt");
QString s4("ftp://myserver.com/myfile.txt");

bool b = isLocalFile(s1); // a path
b = isLocalFile(s2); // a path
b = isLocalFile(s3); // not a path
b = isLocalFile(s4); // not a path

你能举个例子吗?问题中增加了一个例子。是的,这一个实际上更好