А я сейчас вот так сделал, пока другим занимался, но все равно так и хочется вернуться к этой теме:
const int length = strlen(BaseName);
int index = length - 1;
while(isdigit(BaseName[index]) && index >=0) --index;
QString nameForFind = (index == -1) ? "undefined" : QString::fromAscii(BaseName,index+1);
в функцию приходит const char* и QString считывается с него только в нужных размерах. По-моему здорово, только не знаю этот самый isdigit() кроссплатформенный вообще