QStringList文件目录和文件名

QStringList file directory and filename

本文关键字:文件名 文件目录 QStringList      更新时间:2023-10-16

我一直试图将目录中一些图像的所有文件名的列表放入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);
}

您可以使用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将正确处理路径以斜杠结束或不以斜杠结束的情况,以及可能出现的其他不可预见的情况。