2010-09-06 25 views

Respuesta

81

Utilice un QFileInfo retirar de él el camino (si lo hay):

QFileInfo fileInfo(f.fileName()); 
QString filename(fileInfo.fileName()); 
+3

+1. Un poco más sucinto que el mío :-) – paxdiablo

+2

Sí, Qt tiene trucos ocultos por todos lados. Todavía los estoy descubriendo :) –

+14

Puede hacer esto aún más corto al dar el QFile como un parámetro para el constructor QFileInfo: 'QFileInfo fileInfo (f);' –

12

Un enfoque, no necesariamente el mejor: a partir de un QFile, se puede obtener la especificación de archivo con QFile::fileName():

QFile f("/home/umanga/Desktop/image.jpg"); 
QString str = f.fileName(); 

a continuación, puedes utilizar las funciones de cuerda como QString::split:

QStringList parts = str.split("/"); 
QString lastBit = parts.at(parts.size()-1); 
+0

La sección QString es más localizable: –

+6

QString lastBit = str.section ("/", -1, -1); –

+0

@Kamil, deberías dejar eso como una respuesta en lugar de un comentario, luego lo votaré por arriba :-) – paxdiablo

5

acaba además: para separar nombre de archivo y ruta de archivo con QFile f

QString path = f.fileName(); 
QString file = path.section("/",-1,-1); 
QString dir = path.section("/",0,-2); 

que no es necesario crear una fileinfo adicional.

Cuestiones relacionadas