【问题标题】:Filter QGraphicsItems type in a scene from items()从 items() 过滤场景中的 QGraphicsItem 类型
【发布时间】:2020-06-20 16:01:43
【问题描述】:

我正在寻找一种使用 items() 从场景中获取所有 QGraphicsLineItem 的方法。

它提供了所有 QGraphicsItem 的列表,但我只想在 QGraphicsLine 上执行操作。如何对这个列表进行排序/提取我想要的特定类型的项目?

【问题讨论】:

    标签: qt qgraphicsscene qgraphicsitem


    【解决方案1】:

    您可以浏览列表并使用dynamic_cast 测试类型:

    // 我不确定你想在哪里实现这个,
    // 但它可以在派生的 GraphicsScene 类中。
    // 否则,只需调用 scene->items() 并创建一个新列表
    // 在场景类之外。
    无效 CustomScene::foo()
    {
        QList itemList = items();
        for (int i = 0; i (itemList[i])})
                 // 做一个特定的动作或者把它放在 QGraphicsLiteItem*s 的 QList 中
                 // 并返回该列表而不是 void
                 ;
        }
    }
    

    我还没有测试过这段代码,但是这样的事情应该是可能的。

    【讨论】:

    • 谢谢,对我有很大帮助我测试了它以删除所有行!只需更改为 'dynamic_cast'
    • 糟糕,抱歉 :P 此外,您当然可以修改 items() 返回的 QList,但是(对您而言)更容易并且没有更多错误来创建一个新的并添加所有QGraphicsLineItem* 到那个。通过这种方式,您可以确保不会意外跳过正在循环的返回列表中的元素。祝你好运!
    • 谢谢 :)
    猜你喜欢
    • 1970-01-01
    • 2014-09-20
    • 1970-01-01
    • 2015-04-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    • 2023-03-16
    相关资源
    最近更新 更多