返回介绍

QPtrCollection类

发布于 2019-10-04 15:02:04 字数 3075 浏览 973 评论 0 收藏 0

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

#include <qptrcollection.h>

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

所有成员函数的列表。

公有成员

  • bool autoDelete () const
  • void setAutoDelete ( boolenable )
  • virtual uint count () const = 0
  • virtual void clear () = 0
  • typedef void*Item

保护成员

  • QPtrCollection ()
  • QPtrCollection ( constQPtrCollection&source )
  • virtual ~QPtrCollection ()
  • virtual Item newItem ( Itemd )
  • virtual void deleteItem ( Itemd ) = 0

详细描述

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

QPtrCollection类是Qt集合类QDict、QPtrList等等的基类。Qt也包括基于值的集合,比如QValueList、QMap等等。

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

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

也可以参考集合类和非GUI类。


成员类型文档

QPtrCollection::Item

这个类型是QPtrCollection中一般的“项”。


成员函数文档

QPtrCollection::QPtrCollection () [保护]

构造一个集合。构造函数是保护的,因为QPtrCollection是抽象类。

QPtrCollection::QPtrCollection ( constQPtrCollection&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 ( Itemd ) [纯虚 保护]

如果你想能够删除集合中的项,请实现这个函数。

删除一个要从集合中移除的项。

这个函数不得不在集合模板类中重新实现,并且必须只能在自动删除生效的情况下删除d这一项。

警告:如果你重新实现这个函数,你也必须重新实现析构函数并且在你的析构函数中调用虚函数clear()。这是由于C++中虚函数和析构函数工作的方式:被继承类的虚函数不能被一个析构函数调用。如果你不这么做,当容器被破坏时,你的deleteItem()函数将不会被调用。

也可以参考newItem()和setAutoDelete()。

Item QPtrCollection::newItem ( Itemd ) [虚 保护]

虚函数创建一个要被插入到集合中的对象的复制。

默认的实现是返回d指针,比如,没有复制被完成。

在几何模板类中这个函数极少被重新实现。对被插入的东西做复制不是共有的实践。

也可以参考deleteItem()。

void QPtrCollection::setAutoDelete ( boolenable )

如果enable为真,设置集合可以自动删除它的内容,并且如果enable为假,就永远不能删除它们。

如果自动删除被打开,当集合自己被删除时,集合中的所有项也都要被删除。如果集合有的仅仅是指向项的指针,这个很有用。

为了安全,默认设置是假。如果你把它打开,对于集合的复制你要注意些——你自己也许会发现两个集合删除同一个项。

注意在子类中自动删除设置也许会影响其它函数。例如,一个有remove()函数的子类将会从它的数据结构中移除这个项,并且如果自动删除生效,也将会删除这个项。

也可以参考autoDelete()。

实例:grapher/grapher.cpp、scribble/scribble.cpp和table/bigtable/main.cpp。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文