QT:逃避斜线/在mac上保存位置

时间:2015-06-13 07:48:11

标签: macos qt escaping

我有HTML输入我应该提取2个字符串,构建类型为<string 1> / <string 2的文档标题字符串,从用户mac桌面上的源创建PDF并按照描述命名。

我知道文档名称中的斜线不是一个好主意,但这就是我被要求做的事情。

问题是:正斜杠被解释为mac上的文件夹,而不是文档名称的一部分,这意味着QPainter无法打印到PDF,因为它解释string1 /是一个没有文件夹的文件夹存在。

BTW省略/我的代码工作正常。

我该如何逃脱/

这是字符串构建逻辑:

QString docTitle;
docTitle.append(string1);
docTitle.append(" / ");
docTitle.append(string2);

1 个答案:

答案 0 :(得分:0)

在OS X上,API级别的文件名称与Finder,打开和保存面板等中显示给用户的显示名称不同。

在API级别,文件名只是不能包含斜杠。它们保留用于分隔路径中的名称。没有任何形式的逃避或引用允许它。

但是,您可以在UI中创建一个名称将显示并带有斜杠的文件。

基本上,斜杠(/)和冒号(:)字符交换角色。文件的显示名称不能包含冒号,因为它是保留的。 (这是Classic Mac OS中使用的旧HFS文件系统的延续。)因此,从API中的名称到显示名称的转换的一个方面是从冒号转换为斜杠。因此,如果您想要一个显示名称带有斜杠的文件,您实际上使用冒号。

根据API的名称为“重要法律文件06:13:2015.pdf”的文件将在UI中显示为“重要法律文件06/13 / 2015.pdf”。同样,如果用户在保存对话框或Finder中将文件命名为“重要法律文件06/13 / 2015.pdf”,则最终会得到一个名称,当通过API观察时,该名称将是“重要的法律”文件06:13:2015.pdf“。