Удаление расширения имени файла в Qt
Я использую Qt для получения имени файла от пользователя:
QString fileName = QFileDialog::getOpenFileName(this,tr("Select an image file"),"d:\\",tr("Image files(*.tiff *.tif )"));
Это работает, но мне нужно имя файла без его расширения, возможно ли это в Qt??
Когда я пытаюсь:
QString f = QFileInfo(fileName).fileName();
f
как "filename.tif" , но я хочу, чтобы оно было "filename" .
Ответы
Ответ 1
Вы можете split
fileName
с помощью "." как разделитель:
QString croped_fileName=fileName.split(".",QString::SkipEmptyParts).at(0);
или используйте section
функцию QString, чтобы перенести первую часть перед ".". например:
QString croped_fileName=fileName.section(".",0,0);
Ответ 2
QFileInfo
имеет две функции для этого:
QString QFileInfo::completeBaseName () const
Возвращает имя файла с сокращенным сокращенным расширением (file.tar.gz
→ file.tar
)
QString QFileInfo::baseName () const
Возвращает имя файла с удаленным длинным расширением (file.tar.gz
→ file
)
Ответ 3
Чтобы справиться с именами файлов, содержащими несколько точек, найдите последний и возьмите подстроку до этого.
int lastPoint = fileName.lastIndexOf(".");
QString fileNameNoExt = fileName.left(lastPoint);
Конечно, это может (и должно) быть записано как вспомогательная функция для повторного использования:
inline QString withoutExtension(const QString & fileName) {
return fileName.left(fileName.lastIndexOf("."));
}
Ответ 4
Вы можете использовать QString::split
и использовать .
как место, где можно разделить его.
QStringList list1 = str.split(".");
Это вернет a QStringList
с помощью {"filename", "extenstion"}
. Теперь вы можете получить свое имя файла без расширения.