Obtenir le chemin d'accès à partir d'un QML url

FileDialog donne un QML url variable. theurl.toString() donne quelque chose comme file:///c:\foo\bar.txt. Comment puis-je obtenir c:\foo\bar.txt?

Je veux le faire en une croix-plate-forme de voie, et, idéalement, sans compter sur les regex style hacks. QUrl fournit un path() méthode, mais je ne semble pas être en mesure d'y accéder à partir de QML.

Si vous voulez vous app sera de la croix-plate-forme de cette URL est exactement ce dont vous avez besoin. Selon RFC 3986 URL commence avec le protocole. Dans votre cas, il est file://.Tous les composants de Qt comprendre, même pour le pire, parfois, vous obtiendrez une erreur lors de la transmission de quelque chose comme c:/bar.txt. Si vous souhaitez obtenir cette URL dans wrong façon dont vous voulez juste pour remplacer le protocole de partie - theurl.toString().replace("file:///","")
Ouais je l'ai dit je ne veux pas utiliser les regex style hacks. Je me demandais si il y avait une méthode qui me donne le chemin d'accès des données directement (il est stocké dans le QUrl objet). Et ce n'est pas pour passer pour un composant Qt.
Montrant le nom de fichier à l'utilisateur.
J'ai creusé l'intervalle Qt source. Le QML "url" type semble être soutenue par le C++ QUrl classe, qui a une très belle toLocalFile() la méthode, mais ce n'est pas un Q_INVOKABLE méthode, malheureusement.
Je pense que la suppression file:/// avec 3 barres obliques est nécessaire pour Windows, mais s'arrête sur Unix.

OriginalL'auteur Timmmm | 2014-07-24