[QtCore module]

该QAbstractFileEngineIterator类提供一个迭代器接口,用于自定义文件引擎。More…

Methods

  • __init__ (self, QDir.Filters filters, QStringList nameFilters)
  • QFileInfo currentFileInfo (self)
  • QString currentFileName (self)
  • QString currentFilePath (self)
  • QDir.Filters filters (self)
  • bool hasNext (self)
  • QStringList nameFilters (self)
  • QString next (self)
  • QString path (self)

Detailed Description

该QAbstractFileEngineIterator类提供一个迭代器接口,用于自定义文件引擎。

如果你想要的是遍历条目目录,请参见QDirIterator代替。这个类是仅适用于自定义文件引擎的作者。

QAbstractFileEngineIterator是一个单向单次使用的虚拟迭代器,可插入QDirIterator,支持自定义文件引擎提供透明代理迭代。

你可以继承QAbstractFileEngineIterator编写自己的文件引擎时提供一个迭代器。堵塞迭代器到你的文件系统,您只需从一个重新实现返回这个子类的实例QAbstractFileEngine.beginEntryList( ) 。

例如:

  1. QAbstractFileEngineIterator *
  2. CustomFileEngine.beginEntryList([QDir](docs_qdir.html).Filters filters, const [QStringList](docs_qstringlist.html) &filterNames)
  3. {
  4. return new CustomFileEngineIterator(filters, filterNames);
  5. }

QAbstractFileEngineIterator是一个路径,名称的过滤器,并进入过滤器相关联。该路径是提供文件的发动机,可以在迭代器级别(例如,需要最大限度地减少网络流量的网络文件系统)优化目录列表迭代器列表中的条目英寸的名字过滤器和过滤器进入该目录,但它们也可以由迭代子类可以忽略; QAbstractFileEngineIterator已经提供了所需的过滤逻辑的matchesFilters ( )函数。你可以调用目录名( )来获得目录名,nameFilters()来获取的名称过滤器的StringList ,并filters( )来获得进入过滤器。

纯虚函数hasNext如果当前目录中有至少一个以上的项目(即目录名称是有效的和可访问的,我们还没有达到参赛名单的末尾) ,否则返回False ()返回True 。重新实现next()寻求下一个条目。

纯虚函数currentFileName( )返回当前条目的名称,而不推进迭代器。该currentFilePath( )函数提供了方便,它返回当前项的完整路径。

下面是如何实现返回每个三个固定条目的序列的迭代器的例子。

  1. class CustomIterator : public QAbstractFileEngineIterator
  2. {
  3. public:
  4. CustomIterator(const [QStringList](docs_qstringlist.html) &nameFilters, [QDir](docs_qdir.html).Filters filters)
  5. : QAbstractFileEngineIterator(nameFilters, filters), index(0)
  6. {
  7. // In a real iterator, these entries are fetched from the
  8. // file system based on the value of path().
  9. entries << "entry1" << "entry2" << "entry3";
  10. }
  11. bool hasNext() const
  12. {
  13. return index < entries.size() - 1;
  14. }
  15. [QString](docs_qstring.html) next()
  16. {
  17. if (!hasNext())
  18. return [QString](docs_qstring.html)();
  19. ++index;
  20. return currentFilePath();
  21. }
  22. [QString](docs_qstring.html) currentFileName()
  23. {
  24. return entries.at(index);
  25. }
  26. private:
  27. [QStringList](docs_qstringlist.html) entries;
  28. int index;
  29. };

注: QAbstractFileEngineIterator不处理QDir.IteratorFlags ,它只是返回的条目为一个单一的目录。


Method Documentation

  1. QAbstractFileEngineIterator.__init__ (self, QDir.Filters filters, QStringList nameFilters)

构造一个QAbstractFileEngineIterator使用过滤器入口filters和通配符名称的过滤器nameFilters

  1. QFileInfo QAbstractFileEngineIterator.currentFileInfo (self)

虚函数返回一个QFileInfo当前目录项。此功能提供了方便。它也可以是比创建一个稍快QFileInfo反对自己,因为这个函数返回的对象可能包含缓存信息QFileInfo否则将有通过文件引擎来访问。

See also currentFileName( ) 。

  1. QString QAbstractFileEngineIterator.currentFileName (self)

这种方法是抽象的,应在任何子类中重新实现。

这个纯虚函数返回当前目录条目的名称,不包括路径。

See also currentFilePath( ) 。

  1. QString QAbstractFileEngineIterator.currentFilePath (self)

返回路径到当前目录条目。这是一样的前面加上path( )的返回值currentFileName( ) 。

See also currentFileName( ) 。

  1. QDir.Filters QAbstractFileEngineIterator.filters (self)

[

返回入口过滤器这个迭代器。

](docs_index.htm)

See also QDir.filter( )nameFilters()和path( ) 。

  1. bool QAbstractFileEngineIterator.hasNext (self)

这种方法是抽象的,应在任何子类中重新实现。

如果在当前目录中至少有一个以上的项目(例如,迭代器路径是有效的和可访问和迭代器还没有达到参赛名单的末尾)这个纯虚函数返回True。

See also QDirIterator.hasNext( ) 。

  1. QStringList QAbstractFileEngineIterator.nameFilters (self)

返回名称的过滤器为这个迭代器。

See also QDir.nameFilters( )filters()和path( ) 。

  1. QString QAbstractFileEngineIterator.next (self)

这种方法是抽象的,应在任何子类中重新实现。

这个纯虚函数前进迭代到下一个目录项,并返回文件路径到当前项目。

此功能可以选择使使用nameFilters()和filters( )以优化其性能。

重新实现这个函数在子类中推进迭代器。

See also QDirIterator.next( ) 。

  1. QString QAbstractFileEngineIterator.path (self)