QPtrCollection类

Qt 3.0.5

主页 | 所有的类 | 主要的类 | 注释的类 | 分组的类 | 函数

QPtrCollection类参考

QPtrCollection类是绝大多数基于指针的Qt集合的基类。 详情请见……

#include <qptrcollection.h>

Inherited by QAsciiDict, QCache, QDict, QIntDict, QPtrList, QPtrDict and QPtrVector.

所有成员函数的列表。

公有成员

保护成员


详细描述

QPtrCollection类是绝大多数基于指针的Qt集合的基类。

QPtrCollection类是Qt集合类QDictQPtrList等等的基类。Qt也包括基于值的集合,比如QValueListQMap等等。

QPtrCollection仅仅知道集合内对象的数量和删除策略(请参考setAutoDelete())。

集合的实现是使用Item(一般集合项)类型,它是一个void*。创建实际集合的模板类抛出Item为所需的类型。

也可以参考集合类非GUI类


成员类型文档

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()。

QAsciiDictQCacheQDictQIntDictQPtrListQPtrDictQPtrVector中被重新实现。

uint QPtrCollection::count () const [纯虚]

返回集合中对象的数量。

QAsciiDictQCacheQDictQIntDictQPtrListQPtrDictQPtrVector中被重新实现。

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.cppscribble/scribble.cpptable/bigtable/main.cpp


这个文件是Qt工具包一部分。 版权所有 © 1995-2002 Trolltech。保留所有权利。


Copyright © 2002 Trolltech Trademarks 译者:Cavendish
Qt 3.0.5版