【问题标题】:Qt/c++ QGraphicsItem bound to custom ClassQt/c++ QGraphicsItem 绑定到自定义类
【发布时间】:2013-06-10 11:42:11
【问题描述】:

我一直在用 C++/Qt 开发一款游戏。我的游戏由一些自定义类组成,它们带有一个指向从 QGraphicsItem 继承的自定义类图片的指针。 Picture 类还包含一个指向自定义类实例的指针。

现在,当我将带有图片类的项目添加到 QGraphicsScene 时,我想从该场景中获取所选项目,并读取指向其自定义类的指针,但我真的不知道如何做到这一点。我尝试使用 QGraphicsScene->selectedItems() 但这只会返回一个 QList of GraphicsItems :S

有人可以帮我解决这个问题吗? 提前致谢

【问题讨论】:

    标签: c++ qt selecteditem qgraphicsitem qgraphicsscene


    【解决方案1】:

    当您获得场景中选定项目的列表时,您可以使用dynamic_castQGraphicsItems 转换为从QGraphicsItem 继承的自定义类。

    例子:

    QList<QGraphicsItem*> list = scene->selectedItems();
    for(int i = 0; i < list.length(); i++)
    {        
        CustomItem *item = dynamic_cast<CustomItem*>(list[i]);
    }
    

    【讨论】:

    • @CédricVandelaer 我没有说将 QList 转换为您的自定义类 :) 无论如何,我修改了答案,因此它包含一个对您的目的更清楚的示例。
    • 它工作得很好,但是有没有办法保留存储在从 QGraphicsItem 派生的图片类中的指针?
    • @CédricVandelaer 保留指针到底是什么意思?
    • 在场景中选择了一些项目,这些是从QGraphicsItem继承的图片类,但它们也包含一个指针。但是当我第一次将该项目列表转换为您上面提到的 QList 列表时,图片类中的指针不会丢失吗?
    • @CédricVandelaer 您正在投射的是一个 QGraphicsItem 到您的自定义图片项目类。将 QGraphicsItem 转换为您自己的自定义类项后,您可以访问存储在自定义类中的指针。例如,如果我们按照我上面发布的示例:item-&gt;myPointer;.
    猜你喜欢
    • 1970-01-01
    • 2014-06-25
    • 1970-01-01
    • 1970-01-01
    • 2011-07-28
    • 2012-12-14
    • 2011-07-27
    • 1970-01-01
    • 2012-01-25
    相关资源
    最近更新 更多