0

QDir に問題があります。このフォルダーにはたくさんの画像があり、それらを反復処理する必要がありますが、並べ替える必要があるため、使用していますが、 Ubuntu ではsetSorting(QDir::Name)機能しません。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では機能しません。足りないものはありますか?お時間をいただきありがとうございます。

4

1 に答える 1

3

2 つの変数を混合しています:m_dirm_directory. タイプミスだと思います。同じ変数を使用するつもりです。

QDirIteratorソートをサポートしていません。とQDir::setSorting()によって返されるリストにのみ影響します。ソートされた反復にはそれらのいずれかを使用します。QDIr:: entryInfoList()QDir:: entryList()

于 2012-10-19T01:04:23.590 に答える