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.
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:
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()
).
Wenn Sie nicht nur file:///
sondern auch qrc://
und http://
filtern möchten, können Sie diese RegEx verwenden:
Der neue, vollständige Code wäre also:
%Vor%Dies ist ein guter Spielplatz für RegEx'es: Ссылка
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%Tags und Links qt url qml filedialog