【发布时间】:2017-05-18 11:06:58
【问题描述】:
我有两个类,Parent 和Child(后者派生自前者),它们都是 QObject 派生类。这些类被实现为树结构上的节点,为每个节点提供特定的功能。在Parent 类下,有一个信号在触发时创建Child 类型的新对象。因此,在三个触发器之后,树结构将如下所示:
家长
---------孩子1
---------儿童(1)
---------儿童(2)
如何使用QList 来跟踪创建的子对象的数量?我想在索引号后面加上名称,这样Child (1) 看起来像Child 1,现在看起来像一个副本。
我已阅读 QList 文档,并且了解如何在对象位于列表中后提取有意义的信息,但我无法找到答案。
编辑:
假设我做了QList<Child*>ListID,这只是将ListID 初始化为指向Parent 类型列表的指针,还是也填充该列表?
有什么建议吗?
PS:我想在开始实施之前知道这一点,因为我想知道我是否以错误的方式进行。这就是为什么我没有要显示的代码。我希望能进行更多的随意讨论。
【问题讨论】:
-
我不明白你的问题,尤其是“我想在索引号后面加上名称,这样 Child (1) 看起来像 Child 1,现在看起来像副本。”什么看起来像副本?为什么你不能在
Parent类中只保留一个QList<Child>成员? -
那么在
Parent中添加QList<Child*>SomeId会创建一个父级可访问的子级列表吗?我听起来很愚蠢,但我以前没有使用过 QList。同样Child (1)看起来像Child的副本,而不是Child 1。这个例子只是随意的。我需要更详细的功能列表。 -
我仍然不明白“看起来像副本”是什么意思,但是是的,
QList<Child*>SomeId是要走的路,你分配一个对象,附加一个指向列表的指针,你有您可以跟踪的“孩子”。记得在适当的时候注意删除孩子。如果Child类很简单,那么使用QList<Child>可能会更简单。 -
@MichaelThomas 很抱歉跑题了,但是上周你问了很多新手问题。你需要阅读一些关于编程的东西。因为你不知道你在做什么。特别是,阅读一些关于 C++ 及其特性的内容。现在关于主题:使用智能指针,例如
QSharedPointer或std::shared_ptr作为容器的项目。 -
@DmitrySazonov 我真的很抱歉。我尽量让我的疑虑具体化,并且我真的在努力不发送垃圾邮件。这些问题是新手,因为我刚刚开始学习。我也不期待直接的解决方案。任何阅读材料的链接都非常符合要求。除非有人指出我正确的方向,否则它太大了。我也尝试解决我的问题,而不是等待答案。我希望我没有将自己列入黑名单,不再提问。