指向 QGraphicsItem 的指针的 c++ 列表

标签 c++ qt list pointers boost

我正在试验 QT 库和 QGraphicsScene。 我可以将自己的对象添加到场景中,一切都很好。 我现在想要的是对象的 QGraphicsScene 之外的一些列表。 比方说正方形、圆形和三角形。 它们都存在于场景中,并且(如果我是正确的)在我添加它们时复制并归场景所有。

问题是:什么样的列表模板容器最适合实现我的外部列表。

我想它们需要是指针,所以我想到了 boost::ptr_container。 我知道一旦我开始删除项目,我就需要一个系统来确保列表与场景同步。这意味着在从场景中移除对象之前从列表中移除指针。

任何关于我应该如何构建这个系统的想法都会非常好。

最佳答案

你不需要它,Qt 为你做了一切。

将项目添加到 QGraphicsScene 后,场景拥有该项目的所有权。这意味着,场景现在负责存储项目,并在需要时释放项目占用的内存(通常是当您使用 deleteItem() 手动删除项目时,或者场景本身被删除时)。

您可以随时通过调用 items() 请求已添加到场景中的所有项目的列表。功能:

MyGraphicScene.items();

此函数返回指向场景所有项目的指针列表,形式为 QList< QGraphicsItem * >。 ,这正是您所需要的。

关于指向 QGraphicsItem 的指针的 c++ 列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12492582/

相关文章:

Qt tcp/ip 服务器可与 telnet 一起使用,但不能与 python 或 netcat 一起使用

c++ - 友元函数类内定义只允许在非本地类定义中使用。这是什么意思?

c++ - 如何编译 SCIP 以获得类似于 SCIP 网站上提供的二进制包 (Windows)

c++ - 打包修改后的 Qt 类

C# 丢失嵌套列表中的值

python - 使用 Python 和 split() 解析文本文件

list - 了解Scala中的infix方法调用和cons运算符(::)

c++ - 有选择地省略 MSVC 中的帧指针

c++ - 为什么 getenv() 可以在没有 std::的情况下解析名称?

qt - 有关于 Qt 平台插件参数的文档吗?