【问题标题】:Removing multiple items from QGraphicsScene从 QGraphicsScene 中删除多个项目
【发布时间】:2015-08-12 03:12:29
【问题描述】:

在我的 Qt GUI 中,我有 QGraphicsScene,其中添加了 QGraphicsItems。现在为了删除项目,我使用GraphicsScene::selectedItems() 返回屏幕上选择的项目列表。这将返回所选项目的内存地址、它们的位置和标志作为逗号分隔的数组。

现在我如何使用这个结果"QList<QGraphicsItem*> 作为QGraphicsScene::removeItem() 的参数?

更新**** 添加到场景中的项目来自从 GraphicsItem 派生的类。并且每个类都会在项目加载到场景时创建一个文本文件。所以当这个项目被删除时,文本文件也应该被删除。如果我要使用上述方法,我不能那样做。相反,我更喜欢让 QGraphicsScene::selectedItems 选择对象,然后使用类中的成员函数来删除与其关联的文件。我该怎么做呢。请解释一下,非常感谢

【问题讨论】:

标签: c++ qt qgraphicsscene qlist


【解决方案1】:
foreach (QGraphicsItem * i, selectedItems()) removeItem(i);

【讨论】:

  • 兄弟,添加到场景中的每个项目都来自从 GraphicsItem 派生的类。并且每个类都会在项目加载到场景时创建一个文本文件。所以当这个项目被删除时,文本文件也应该被删除。如果我要使用上述方法,我不能那样做。相反,我更喜欢让 QGraphicsScene::selectedItems 选择对象,然后使用类中的成员函数来删除与其关联的文件。我该怎么做呢。请解释一下,非常感谢:)
  • 删除项目析构函数中的文件...在removeItem(i)之后也调用delete iremoveItem(i) 不会删除该项目,只会将其从该特定屏幕中删除。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-31
  • 1970-01-01
  • 1970-01-01
  • 2012-12-01
  • 1970-01-01
相关资源
最近更新 更多