Подтвердить что ты не робот

Удаление расширения имени файла в 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" .

4b9b3361

Ответ 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.gzfile.tar)

QString QFileInfo::baseName () const

Возвращает имя файла с удаленным длинным расширением (file.tar.gzfile)

Ответ 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"}. Теперь вы можете получить свое имя файла без расширения.