【发布时间】:2014-09-15 15:54:03
【问题描述】:
FileDialog 给出 QML url 变量。 theurl.toString() 给出类似file:///c:\foo\bar.txt 的东西。我如何获得c:\foo\bar.txt?
我想以跨平台的方式进行,理想情况下不依赖于正则表达式风格的黑客。 QUrl 提供了 path() 方法,但我似乎无法从 QML 访问它。
【问题讨论】:
-
如果你希望你的应用是跨平台的,这个 URL 正是你所需要的。根据
RFC 3986URL 以协议开头。在您的情况下,它是file://。所有Qt 组件都理解它,更糟糕的是,有时您在传递c:/bar.txt之类的内容时会出错。如果您仍想以wrong的方式获取此 URL,您只想替换协议部分 -theurl.toString().replace("file:///","") -
是的,我说过我不想使用正则表达式样式的黑客。我想知道是否有一种方法可以直接给我路径数据(它存储在 QUrl 对象中)。这不是传递给 Qt 组件。
-
向用户显示文件名。
-
我深入研究了 Qt 源代码。 QML“url”类型似乎由 C++ QUrl 类支持,它有一个非常好的 toLocalFile() 方法,但遗憾的是,这不是 Q_INVOKABLE 方法。
-
我认为用 3 个斜线删除
file:///对于 Windows 是必要的,但在 Unix 上会中断。
标签: qt url qml filedialog