Ermittelt den Pfad von einer QML-URL

9

FileDialog gibt eine QML url Variable. theurl.toString() gibt etwas wie file:///c:\foo\bar.txt . Wie bekomme ich c:\foo\bar.txt ?

Ich möchte es plattformübergreifend machen und idealerweise ohne Regex-ähnliche Hacks. QUrl bietet eine path() -Methode, aber ich kann nicht von QML aus darauf zugreifen.

    
Timmmm 24.07.2014, 07:43
quelle

2 Antworten

4

Wie bereits in den Kommentaren erwähnt, scheint es (noch?) keinen Weg zu geben, den Pfad selbst ohne eine Regex zu erhalten. Das ist also der einzige Weg zu gehen:

Basislösung

%Vor%

Diese Regex sollte ziemlich robust sein, da sie nur file:/// vom Anfang der Zeichenfolge entfernt.

Sie müssen auch einige HTML-Zeichen ausblenden (wenn der Dateiname zB den Hash # enthält, wird dieser als %23 zurückgegeben. Wir dekodieren dies mit der JavaScript-Funktion decodeURIComponent() ).

Voll funktionsfähiges Beispiel

Wenn Sie nicht nur file:/// sondern auch qrc:// und http:// filtern möchten, können Sie diese RegEx verwenden:

%Vor%

Der neue, vollständige Code wäre also:

%Vor%

Dies ist ein guter Spielplatz für RegEx'es: Ссылка

    
mozzbozz 11.11.2014 15:22
quelle
0

In MS Windows sollte "file: /// c: \ foo \ bar.txt" in "c: \ foo \ bar.txt" konvertiert werden. In Linux hat die URL "file: /// Users / data / abcdef" jedoch den korrekten Pfad als "/ Users / data / abcdef". Ich habe eine einfache Funktion zum Umwandeln von URL in Pfad erstellt:

%Vor%     
Tony 29.03.2018 20:42
quelle

Tags und Links