我有QStringList
个文件路径。但是这些文件路径不是正常格式,我在文件路径中有环境变量,例如%PATH_OF_VAR%/GEN/abc.txt
。我正在使用fileName
,但显然它不起作用。我想要做的是,我只需要从中获取fileName并将其保存在另一个QStringList
中。当从第二个QStringList
删除任何fileName时,需要从第一个QStringList
编辑:
Xmlget.load(String);
QStringList list;
QStringList preset_scr;
QString name;
xmlget.findAndDescend("INIT_SKRIPTE");
while(xmlget.findNext("SKRIPT"))
{
preset_scr.append(xmlget.getString());
}
for(int i=0;i<preset_scr.count();i++)
{
QFile file(preset_scr.at(i));
name = file.fileName();
list.append(name);
}
qDebug()<<list;
EDIT2:我使用QFileInfo
代替QFile
修剪工作,我不清楚当第二QStringList
<时有一些变化时如何更新第一QStringList
/ p>
答案 0 :(得分:0)
如果您的文件路径始终如%PATH_OF_VAR%/GEN/abc.txt
,那么您可以填写第二个列表:
foreach(const QString& path, preset_scr) {
QString name = preset_scr.at(i).split("/").last();
list.append(name);
}
二。从第二个列表中删除字符串时,可以从第一个列表中删除路径(假设fileName
是要删除的名称):
for(int i = preset_scr.count() - 1; i>=0; --i) {
if(preset_scr.at(i).split("/").last() == fileName)
preset_scr.removeAt(i);
}
答案 1 :(得分:0)
您可以尝试迭代列表并将每个字符串拆分为仅获取文件名:
QStringList preset_scr;
QStringList newList;
QString filename;
for( const auto & s : preset_scr ) {
filename = s.split("/").last();
newList.append(filename);
}