【发布时间】:2020-06-20 16:01:43
【问题描述】:
我正在寻找一种使用 items() 从场景中获取所有 QGraphicsLineItem 的方法。
它提供了所有 QGraphicsItem 的列表,但我只想在 QGraphicsLine 上执行操作。如何对这个列表进行排序/提取我想要的特定类型的项目?
【问题讨论】:
标签: qt qgraphicsscene qgraphicsitem
我正在寻找一种使用 items() 从场景中获取所有 QGraphicsLineItem 的方法。
它提供了所有 QGraphicsItem 的列表,但我只想在 QGraphicsLine 上执行操作。如何对这个列表进行排序/提取我想要的特定类型的项目?
【问题讨论】:
标签: qt qgraphicsscene qgraphicsitem
您可以浏览列表并使用dynamic_cast 测试类型:
// 我不确定你想在哪里实现这个,
// 但它可以在派生的 GraphicsScene 类中。
// 否则,只需调用 scene->items() 并创建一个新列表
// 在场景类之外。
无效 CustomScene::foo()
{
QList itemList = items();
for (int i = 0; i (itemList[i])})
// 做一个特定的动作或者把它放在 QGraphicsLiteItem*s 的 QList 中
// 并返回该列表而不是 void
;
}
}
我还没有测试过这段代码,但是这样的事情应该是可能的。
【讨论】:
items() 返回的 QList,但是(对您而言)更容易并且没有更多错误来创建一个新的并添加所有QGraphicsLineItem* 到那个。通过这种方式,您可以确保不会意外跳过正在循环的返回列表中的元素。祝你好运!