我一直在尝试将目录中某些图像的所有文件名列表放到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);
}
答案 0 :(得分:3)
您可以使用QDir::entryInfoList
和QFileInfo::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将正确处理路径结束或不以斜线结束的情况,以及可能的其他无法预料的情况。