C++ (Qt)
QMessageBox msgBox;
//QStringList files;
//диалог выбора файлов
Qstring str = QFileDialog::getOpenFileName(this, tr("Open File"),
"C:/temp/", tr("*.mp3"));
if(str == "") return;
msgBox.setText(str);
msgBox.exec();
// выделение имени файла из полного
QString inp_fname = str.section('/', -1);
msgBox.setText(inp_fname);
msgBox.exec();
// путь без имени файла
QString out_patch = str.remove(inp_fname);
msgBox.setText(out_patch);
msgBox.exec();
Вот так всё работает, сперва выводит полный путь к файлу с именем файла, затем только имя файла, и затем путь без имени - то, что требуется. Но отказывается работать, если применить диалог множественного выбора файлов и QStringList:
C++ (Qt)
QMessageBox msgBox;
QStringList files;
//диалог выбора файлов
files = QFileDialog::getOpenFileNames(this, tr("Open File"),
"C:/temp/", tr("*.mp3"));
QStringList::Iterator it = files.begin();
// количество выбранных файлов
int cx = files.size();
// полный путь к входному файлу
QString str = *it;
//Qstring str = files[0];
if(str == "") return;
msgBox.setText(str);
msgBox.exec();
// выделение имени файла из полного
QString inp_fname = str.section('/', -1);
msgBox.setText(inp_fname);
msgBox.exec();
// путь без имени файла
QString out_patch = str.remove(inp_fname);
msgBox.setText(out_patch);
msgBox.exec();
При этом в первом msgBox показывается правильный полный путь к файлу, во втором - тот же полный путь к файлу без изменений, а ожидается только имя файла. Ну и в третьем, ессно, пустая строка. Почему не хочет работать str.section('/', -1);? Замена QString str = *it; на QString str = files[0]; никакого результата не даёт.