2010-12-06 12 views
7

साथ फ़िल्टर QFileInfoList फ़ाइलें मैं एक QFileInfoList (सूची) है कि कोई निर्देशिका और उसकी फ़ाइलक्यूटी

QFileInfoList list = directory.entryInfoList(); 

मैं फिल्टर कैसे आवेदन कर सकता इमेज फ़ाइल (jpg, gif, png आदि के अलावा सब कुछ को दूर करने के बारे में जानकारी शामिल है)?

यहाँ एक सरल foreach पाश है कि केवल सब कुछ है कि एक फ़ाइल

foreach (QFileInfo f, list){ 
     if (!f.isFile()){ 
     list.removeOne(f); 
     } 

मैं फिल्टर कैसे आवेदन कर सकता इमेज फ़ाइल (jpg, gif, png आदि) के अलावा सब कुछ दूर करने के लिए नहीं है को दूर करता है?

उत्तर

15

QDir :: entryInfoList(), नाम फिल्टर लेता है अगर आप विस्तार से छवियों का निर्धारण करने सहज महसूस करते हैं:

QStringList nameFilter; 
nameFilter << "*.png" << "*.jpg" << "*.gif"; 
QFileInfoList list = directory.entryInfoList(nameFilter, QDir::Files); 
2

सबसे पहले, आप QDir :: entryInfoList पर उचित झंडे का उपयोग क्यों नहीं करेंगे और निर्देशिका नहीं है, और वांछित फ़ाइल एक्सटेंशन को फ़िल्टर करें।

दूसरे, आप प्रत्येक फ़ाइल `bool QImageReader :: canRead (पर उपयोग कर सकते हैं, लेकिन यह अगर वे छवियों रहे हैं जाँच करने के लिए, तो यह काफी धीमी गति से हो जाएगा फ़ाइलों तक पहुंच पाएंगे।

इसके अलावा, आप बनाने की कोशिश कर सकते हैं ऊपर QImageReader::supportedImageFormats() साथ एक्सटेंशन का समर्थन किया, और उन्हें फिल्टर के रूप में जोड़ने के entryInfoList को