J'utilise Qt pour obtenir un nom de fichier de l'utilisateur:
QString fileName = QFileDialog::getOpenFileName(this,tr("Select an image file"),"d:\\",tr("Image files(*.tiff *.tif )"));
Cela fonctionne, mais j'ai besoin du nom de fichier sans son extension , est-ce possible dans Qt ?? quand j'essaie:
QString f = QFileInfo(fileName).fileName();
f
est comme "filename.tif" , mais je veux que ce soit "filename" .
Vous pouvez split
fileName
avec "." comme séparateur comme ceci:
QString croped_fileName=fileName.split(".",QString::SkipEmptyParts).at(0);
ou utilisez la fonction section
de QString pour prendre la première partie avant "." comme ça:
QString croped_fileName=fileName.section(".",0,0);
QFileInfo
a deux fonctions pour cela:
QString QFileInfo::completeBaseName () const
Retourne le nom du fichier avec l'extension la plus courte supprimée (file.tar.gz
-> file.tar
)
QString QFileInfo::baseName () const
Retourne le nom du fichier avec l'extension la plus longue supprimée (file.tar.gz
-> file
)
Pour faire face aux noms de fichiers contenant plusieurs points, recherchez le dernier et prenez la sous-chaîne jusqu'à celle-ci.
int lastPoint = fileName.lastIndexOf(".");
QString fileNameNoExt = fileName.left(lastPoint);
Bien sûr, cela peut (et devrait) être écrit comme une fonction d'assistance pour la réutilisation:
inline QString withoutExtension(const QString & fileName) {
return fileName.left(fileName.lastIndexOf("."));
}
Vous pouvez utiliser QString::split
et utiliser le .
comme endroit où le scinder.
QStringList list1 = str.split(".");
Cela retournera une QStringList
avec {"filename", "extenstion"}
. Maintenant, vous pouvez obtenir votre nom de fichier sans l'extension.