QStringList文件目录和文件名

时间:2014-06-15 14:49:18

标签: c++ qt qstring

我一直在尝试将目录中某些图像的所有文件名列表放到QStringList中,唯一的问题是我希望目录的名称也包含在结果字符串中。例如,我的列表只包含各种图像名称,例如“image_x.jpg”,但我也希望包含目录,例如“../../ images/image_x.jpg”。在过去的几个小时里我一直在尝试不同的方法,看过Qt文档,我仍然被卡住了。提前谢谢。

QDir dir ("../../images/");
dir.setSorting(QDir::Name);
QStringList list = dir.entryList(QDir::AllEntries | QDir::Dirs);

for (int i = 1; i < list.size(); i++)
{
    qDebug() << "Filename " + QString::number(i) + " = " + list.at(i);
}

1 个答案:

答案 0 :(得分:3)

您可以使用QDir::entryInfoListQFileInfo::filePath

QFileInfoList list = dir.entryInfoList(QDir::AllEntries);
for (int i = 1; i < list.size(); i++)
{
    qDebug() << "Filename " + QString::number(i) + " = " + list.at(i).filePath();
}

或者,您可以使用QDir::filePath

QStringList list = dir.entryList(QDir::AllEntries);
for (int i = 1; i < list.size(); i++)
{
    qDebug() << "Filename " << i << " = " << dir.filePath(list.at(i));
}

请注意,QDir::AllEntries已包含QDir::Dirs,因此再次添加它是没有意义的。

这种方法有利于手动将dir路径添加到文件路径:Qt将正确处理路径结束或不以斜线结束的情况,以及可能的其他无法预料的情况。