Y a-t-il QPath :: Combine dans QT4?
J'ai besoin d'un semblable .Méthode NETTE en toute sécurité pour combiner pièces chemin sans se soucier de la plate-forme spécificités du séparateur de chemin.
Est qu'il y a tellement de classe et de la méthode en QT4?
Quelque chose comme:
QPath::Combine
source d'informationauteur Ivelin Nikolaev
Vous devez vous connecter pour publier un commentaire.
Il n'y a pas une fonction qui peut être utilisé comme remplacement direct pour
Path.Combine()
donc, vous devez écrire votre propre.Vous pouvez le faire de la manière difficile (manutention tout par vous-même) ou simplement utiliser
QDir::cleanPath()
:J'ai utilisé
QDir::separator()
mais comme souligné dans Croix-plate-forme de la construction d'une FS chemin avec Qt vous n'avez pas vraiment besoin, et vous ne pouvez tout simplement utiliser le /.QDir::cleanPath()
va supprimer la double / (ou double \selonQDir::separator()
) et permettra de résoudre . et .. pour les valeurs appropriées. Voir aussi Qt équivalent de PathAppend? pour code sur QTPathAppend()
de remplacement.Comme l'a dit elle imite
PathAppend()
fonction native (voir MSDN) mais c'est pas un remplacement exact dePath.Combine()
parce quePath.Combine()
ne pas effectuer une nettoyage ou de la normalisation (juste ajoute des cordes, de la manipulation des séparateurs de répertoire dans le bon sens, voir MSDN). Si vous avez besoin d'un remplacement exact vous pouvez utiliser celui-ci:Cette fonction ne sera pas ajouter un point séparateur de répertoire si
path2
est un nom de répertoire (il n'effectue pas de vérification et le chemin d'accès peut même ne pas exister du tout). Notez également quepath2
doit être un sous-chemin depath1
(les chemins d'accès relatifs au dessus depath1
ne sont pas pris en charge, si vous en avez besoin, vous devez utiliser la version précédente avecQDir::cleanPath()
), aussi sipath2
est enraciné, puispath2
est retourné (cette mise en œuvre est assez naïve, par exemple, il n'est pas détecterc:\directory
comme un enracinée chemin d'accès).trim()
ettrimEnd()
fonctions de supprimer de fuite séparateur de répertoire (pour un possible, génériques, la mise en œuvre voir Comment puis-je supprimer fuite des espaces à partir d'un QString? comme point de départ). Algorithme assurer qu'il y a une fuite séparateur de répertoire est le même que celui décrit dans Comment s'assurer qu'il n'est pas au top séparateur de répertoire dans les chemins? (simplifié car ici, nous avons toujours un séparateur de répertoire donné parQDir::separator()
).Vous pouvez utiliser les méthodes statiques
QDir::fromNativeSeparators
etQDir::toNativeSeparators
et ensuite utiliser/
partout lors de la manipulation de la voie.Je ne sais pas de quoi que ce soit exactement comme ça, mais vous pouvez obtenir près en utilisant
QDir::cd()
:Malheureusement, je pense que cela ne fonctionne que pour les répertoires, pas de fichiers. Pour les fichiers, vous pouvez utiliser
QDir::filePath()
: