【问题标题】:QStringList file directory and filenameQStringList 文件目录和文件名
【发布时间】:2014-06-15 14:49:17
【问题描述】:

我一直在尝试将目录中某些图像的所有文件名的列表放入 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的文件夹路径和文件名连接起来吗?
  • 我尝试连接 QStringList 和 QList 的各种方法。你有什么想法吗?
  • 出了什么问题? list[i] = "../../images/" + list[i] 应该可以工作
  • 谢谢。出于某种原因,我正在尝试 list.at(i) = "../../images/" + list.at(i) 。我想该睡觉了:)

标签: c++ qt qstring


【解决方案1】:

您可以使用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,所以没有必要再添加了。

这种方法相对于手动将目录路径添加到文件路径具有优势:Qt 将正确处理路径以斜线结尾或不以斜线结尾的情况,以及可能的其他不可预见的情况。

【讨论】:

    猜你喜欢
    • 2014-03-10
    • 2014-02-02
    • 1970-01-01
    • 2011-10-20
    • 1970-01-01
    • 2014-10-04
    • 1970-01-01
    • 2011-09-09
    • 2014-10-20
    相关资源
    最近更新 更多