【问题标题】:QDir::SetSorting Doesn't work on UbuntuQDir::SetSorting 在 Ubuntu 上不起作用
【发布时间】:2012-10-09 13:49:55
【问题描述】:

我遇到了 QDir 的问题,我有这个包含很多图像的文件夹,我需要遍历它们,但是它们必须被排序,所以,我使用 setSorting(QDir::Name) 但是,它不起作用在 Ubuntu 上。当我使用 QDirIterator 对其进行迭代时,它会随机选择给定文件夹中的图片。奇怪的是,我在 Windows(minGW 或 MSVC)上使用了相同的代码,而且效果很好。

someClass::someClass(QDir dir) {
     m_dir = dir;
     m_directory.setSorting(QDir::Name);
     QStringList filter;
     filter << QString("*.") + format << QString("*.") + "jpg";
     m_dir.setNameFilters(filter);
}
someClass::iterateDir() {
     QDirIterator it(m_dir);
     while(it.hasNext()) {
         it.next();
         qDebug() << it.fileName();

         //analayze the picture here
     }
}

这里it.fileName() 应该打印 (0.jpeg, 1.jpeg .... 3000.jpeg) 但它打印的是 (2342.jpg, 1286.jpg, 684.jpg ... 712.jpg) 我试过了使用其他 sortFlags (QDir::Size, QDir::LocaleAware) 但它们都不能在 Ubuntu 上运行。 有什么我想念的吗? 感谢您的宝贵时间。

【问题讨论】:

    标签: c++ qt ubuntu directory qdir


    【解决方案1】:

    您正在混合 2 个变量:m_dirm_directory。我认为这是错字,您的意思是使用相同的变量。

    QDirIterator 不支持排序。 QDir::setSorting() 只影响QDIr:: entryInfoList()QDir:: entryList() 返回的列表。使用它们中的任何一个进行排序迭代。

    【讨论】:

    • 感谢您的回答!是的,这是一个错字,当我在 Windows 上使用 QDirIterator 时,我总是以排序的方式获取图片。我之前使用过 entryList 但与 QDirIterator 相比它非常慢 有没有一种快速遍历目录的方法?
    猜你喜欢
    • 1970-01-01
    • 2018-06-08
    • 2013-12-28
    • 2023-03-29
    • 2014-06-05
    • 2010-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多