6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
46
47
48
49
50
51
52
53
54
55
56
57
58
59
67#include <QtCore/qset.h>
68#include <QtCore/qstack.h>
69#include <QtCore/qvariant.h>
70#if QT_CONFIG(regularexpression)
71#include <QtCore/qregularexpression.h>
74#include <QtCore/private/qfilesystemiterator_p.h>
75#include <QtCore/private/qfilesystementry_p.h>
76#include <QtCore/private/qfilesystemmetadata_p.h>
77#include <QtCore/private/qfilesystemengine_p.h>
78#include <QtCore/private/qfileinfo_p.h>
79#include <QtCore/private/qduplicatetracker_p.h>
87using namespace Qt::StringLiterals;
90 QDirIterator::IteratorFlags flags)
93 QDirListing::IteratorFlags listerFlags = QDirPrivate::toDirListingFlags(filters);
95 if (flags & QDirIterator::FollowSymlinks)
96 listerFlags |= F::FollowDirSymlinks;
97 if (flags & QDirIterator::Subdirectories)
98 listerFlags |= F::Recursive;
117 while (iter != lister.end()) {
119 if (QDirPrivate::checkNonDirListingFlags(dirEntry, filters)) {
120 nextFileInfo = dirEntry.fileInfo();
132 if (it == lister.end()) {
133 currentFileInfo = {};
136 currentFileInfo = nextFileInfo;
137 skipToNextMatch(++it);
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162QDirIterator::QDirIterator(
const QDir &dir, IteratorFlags flags)
163 : d(
new QDirIteratorPrivate(dir.path(), dir.nameFilters(), dir.filter(), flags))
168
169
170
171
172
173
174
175
176
177
178
179
180QDirIterator::QDirIterator(
const QString &path, QDir::Filters filters, IteratorFlags flags)
181 : d(
new QDirIteratorPrivate(path, {}, filters, flags))
186
187
188
189
190
191
192
193
194
195
196
197QDirIterator::QDirIterator(
const QString &path, IteratorFlags flags)
198 : d(
new QDirIteratorPrivate(path, {}, QDir::NoFilter, flags))
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220QDirIterator::QDirIterator(
const QString &path,
const QStringList &nameFilters,
221 QDir::Filters filters, IteratorFlags flags)
222 : d(
new QDirIteratorPrivate(path, nameFilters, filters, flags))
227
228
229QDirIterator::~QDirIterator()
234
235
236
237
238
239
240
241
242
243
244
245
246QString QDirIterator::next()
249 return d->currentFileInfo.filePath();
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267QFileInfo QDirIterator::nextFileInfo()
270 return d->currentFileInfo;
274
275
276
277
278
279bool QDirIterator::hasNext()
const
281 return d->it != d->lister.end();
285
286
287
288
289
290
291
292
293
294QString QDirIterator::fileName()
const
296 return d->currentFileInfo.fileName();
300
301
302
303
304QString QDirIterator::filePath()
const
306 return d->currentFileInfo.filePath();
310
311
312
313
314QFileInfo QDirIterator::fileInfo()
const
316 return d->currentFileInfo;
320
321
322QString QDirIterator::path()
const
324 return d->lister.iteratorPath();
QDirIteratorPrivate(const QString &path, const QStringList &nameFilters={}, QDir::Filters dirFilters=QDir::NoFilter, QDirIterator::IteratorFlags flags=QDirIterator::NoIteratorFlags)
void skipToNextMatch(QDirListing::const_iterator &iter)
QDirListing::const_iterator it
QFileInfo currentFileInfo
reference operator*() const
Returns a {const QDirListing::DirEntry &} of the directory entry this iterator points to.
const_iterator & operator++()
Pre-increment operator.
IteratorFlag
This enum class describes flags that can be used to configure the behavior of QDirListing.
static QDirListing::IteratorFlags toDirListingFlags(QDir::Filters filters, QDirIterator::IteratorFlags flags)