我对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上工作。我遗漏了什么吗?谢谢您抽时间见我。
发布于 2012-10-19 01:04:23
您正在混合两个变量:m_dir和m_directory。我猜它是错误的,你的意思是使用相同的变量。
QDirIterator不支持排序。QDir::setSorting()只影响QDIr:: entryInfoList()和QDir:: entryList()返回的列表。在排序迭代中使用它们中的任何一个。
https://stackoverflow.com/questions/12965919
复制相似问题