Dea*_*hen 17 c++ qt qml qurl qtcore
我从Qml获取文件路径,如下所示:
mainView.projectFilePath = Qt.resolvedUrl(newProjectFileDlg.fileUrl).toString();
Run Code Online (Sandbox Code Playgroud)
上面的文件路径如下所示:file:/// C:/uuuu.a3
但当这条路径传递给QFile时,它会抱怨
The filename, directory name, or volume label syntax is incorrect
Run Code Online (Sandbox Code Playgroud)
如何解决这个问题呢?
小智 24
QUrl url(newProjectFileDlg.fileUrl);
url.toLocalFile();
Run Code Online (Sandbox Code Playgroud)
这可能就是你所需要的.它会在你的情况下返回"C:/uuuu.a3".
lpa*_*app 13
QString不适用于规范网址表示.它是一个字符串类,主要是由于utf用例.
您正在寻找的是QUrl,它适用于这样的用例.将您的路径传递给它,然后从中获取"QFile可读"路径,然后将其传递给QFile.
在将路径传递给QFile之前,您需要使用以下方法进行转换:
QUrl QUrl :: fromLocalFile(const QString&localFile)[静态]
返回localFile的QUrl表示形式,解释为本地文件.此函数接受由斜杠分隔的路径以及此平台的本机分隔符.
此函数还接受带有加倍前导斜杠(或反斜杠)的路径以指示远程文件,如"//servername/path/to/file.txt"中所示.请注意,只有某些平台可以使用QFile :: open()实际打开此文件.
QML 没有这些东西是多么烦人。我创建了一个可以从 QML 调用的辅助函数:
Q_INVOKABLE QString convertUrlToNativeFilePath(const QUrl& urlStylePath) const;
Run Code Online (Sandbox Code Playgroud)
这只是这样做:
QString OurClassName::convertUrlToNativeFilePath(const QUrl& urlStylePath) const
{
return QDir::toNativeSeparators(urlStylePath.toLocalFile());
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
15092 次 |
最近记录: |