主页 | 所有的类 | 主要的类 | 注释的类 | 分组的类 | 函数 |
QPtrCollection类参考
QPtrCollection类是绝大多数基于指针的Qt集合的基类。 详情请见……
#include <qptrcollection.h>
Inherited by QAsciiDict, QCache, QDict, QIntDict, QPtrList, QPtrDict and QPtrVector.
公有成员
- bool autoDelete () const
- void setAutoDelete ( bool enable )
- virtual uint count () const = 0
- virtual void clear () = 0
- typedef void * Item
保护成员
- QPtrCollection ( const QPtrCollection & source )
- virtual ~QPtrCollection ()
- virtual Item newItem ( Item d )
- virtual void deleteItem ( Item d ) = 0
详细描述
QPtrCollection类是绝大多数基于指针的Qt集合的基类。
QPtrCollection类是Qt集合类QDict、QPtrList等等的基类。Qt也包括基于值的集合,比如QValueList、QMap等等。
QPtrCollection仅仅知道集合内对象的数量和删除策略(请参考setAutoDelete())。
集合的实现是使用Item(一般集合项)类型,它是一个void*。创建实际集合的模板类抛出Item为所需的类型。
成员类型文档
QPtrCollection::Item
这个类型是QPtrCollection中一般的“项”。
成员函数文档
QPtrCollection::QPtrCollection () [保护]
构造一个集合。构造函数是保护的,因为QPtrCollection是抽象类。
QPtrCollection::QPtrCollection ( const QPtrCollection & source ) [保护]
构造一个autoDelete()设置为假,source的一份复制。这个构造函数是保护的,因为QPtrCollection是抽象类。
注意如果source中autoDelete设置为打开的,复制它将会导致内存泄漏、读取被释放的内存或者两者都有的风险。
QPtrCollection::~QPtrCollection () [虚 保护]
销毁这个集合。这个析构函数是保护的,因为QPtrCollection是抽象类。bool QPtrCollection::autoDelete () const
返回自动删除选项的设置。默认值为FALSE。
也可以参考setAutoDelete()。
void QPtrCollection::clear () [纯虚]
从集合中移除所有的对象。如果自动删除被设置为生效,这些对象将被删除。也可以参考setAutoDelete()。
在QAsciiDict、QCache、QDict、QIntDict、QPtrList、QPtrDict和QPtrVector中被重新实现。
uint QPtrCollection::count () const [纯虚]
返回集合中对象的数量。在QAsciiDict、QCache、QDict、QIntDict、QPtrList、QPtrDict和QPtrVector中被重新实现。
void QPtrCollection::deleteItem ( Item d ) [纯虚 保护]
如果你想能够删除集合中的项,请实现这个函数。删除一个要从集合中移除的项。
这个函数不得不在集合模板类中重新实现,并且必须只能在自动删除生效的情况下删除d这一项。
警告:如果你重新实现这个函数,你也必须重新实现析构函数并且在你的析构函数中调用虚函数clear()。这是由于C++中虚函数和析构函数工作的方式:被继承类的虚函数不能被一个析构函数调用。如果你不这么做,当容器被破坏时,你的deleteItem()函数将不会被调用。
也可以参考newItem()和setAutoDelete()。
Item QPtrCollection::newItem ( Item d ) [虚 保护]
虚函数创建一个要被插入到集合中的对象的复制。默认的实现是返回d指针,比如,没有复制被完成。
在几何模板类中这个函数极少被重新实现。对被插入的东西做复制不是共有的实践。
也可以参考deleteItem()。
void QPtrCollection::setAutoDelete ( bool enable )
如果enable为真,设置集合可以自动删除它的内容,并且如果enable为假,就永远不能删除它们。
如果自动删除被打开,当集合自己被删除时,集合中的所有项也都要被删除。如果集合有的仅仅是指向项的指针,这个很有用。
为了安全,默认设置是假。如果你把它打开,对于集合的复制你要注意些——你自己也许会发现两个集合删除同一个项。
注意在子类中自动删除设置也许会影响其它函数。例如,一个有remove()函数的子类将会从它的数据结构中移除这个项,并且如果自动删除生效,也将会删除这个项。
也可以参考autoDelete()。
实例:grapher/grapher.cpp、scribble/scribble.cpp和table/bigtable/main.cpp。
这个文件是Qt工具包一部分。 版权所有 © 1995-2002 Trolltech。保留所有权利。
Copyright © 2002 Trolltech | Trademarks | 译者:Cavendish | Qt 3.0.5版
|