C++ QFile不';无法识别文件:///url路径格式
我从Qml获取文件路径,如下所示:C++ QFile不';无法识别文件:///url路径格式,c++,qt,qml,qtcore,qurl,C++,Qt,Qml,Qtcore,Qurl,我从Qml获取文件路径,如下所示: mainView.projectFilePath = Qt.resolvedUrl(newProjectFileDlg.fileUrl).toString(); 上面的文件路径如下所示:file:///C:/uuuu.a3 但是当这个路径被传递到QFile时,它会抱怨 The filename, directory name, or volume label syntax is incorrect 如何解决这个问题?QString并不是用于规范的url表示
mainView.projectFilePath = Qt.resolvedUrl(newProjectFileDlg.fileUrl).toString();
上面的文件路径如下所示:file:///C:/uuuu.a3
但是当这个路径被传递到QFile时,它会抱怨
The filename, directory name, or volume label syntax is incorrect
如何解决这个问题?QString并不是用于规范的url表示。它是一个字符串类,主要由于utf用例而存在 您正在寻找的是用于此类用例的QUrl。将您的路径传递给该文件,然后从中获取“QFile可读”路径,然后将其传递给QFile 在将路径传递到QFile之前,需要使用以下方法进行转换: 返回localFile的QUrl表示形式,解释为本地文件。此函数接受由斜杠分隔的路径以及此平台的本机分隔符 此函数还接受带有双前导斜杠(或反斜杠)的路径,以指示远程文件,如“//servername/path/to/file.txt”。请注意,只有某些平台可以使用QFile::open()实际打开此文件 这可能是你需要的。在您的情况下,它将返回“C:/uuu.a3”。请查看
QDir::tonativeparator(QString)
QML没有这些东西是多么烦人啊。我创建了一个可以从QML调用的助手函数:
Q_INVOKABLE QString convertUrlToNativeFilePath(const QUrl& urlStylePath) const;
这就是:
QString OurClassName::convertUrlToNativeFilePath(const QUrl& urlStylePath) const
{
return QDir::toNativeSeparators(urlStylePath.toLocalFile());
}
这是问题的正确答案,而不是公认的答案。对我来说,
QUrl(“file:///C:/myfile.txt)。toLocalFile()
执行到“C:/myfile.txt”
的转换,而fromLocalFile似乎只是在“file://“
前面加上前缀。还有,谢谢,这很有帮助
QString OurClassName::convertUrlToNativeFilePath(const QUrl& urlStylePath) const
{
return QDir::toNativeSeparators(urlStylePath.toLocalFile());
}