[英]Qt add extended QGraphicsItem to scene
我创建了一个类Atom
,它扩展了Qt类QGraphicsItem
如下所示:
Atom::Atom(qreal rad, qreal mass, int element, int state) : QGraphicsItem()
{
// Initialization code
}
void Atom::changeState(int newState)
{
// Code...
}
然后,我将原子添加到场景中,如下所示:
Atom *a=new Atom(rad,mass,element,state);
a->setPos(pos);
scene->addItem(a);
但是,Qt将我的Atom类转换为QGraphicsItem类。 现在,当我调用scene->items()
,我得到一个QGraphicsItems的QList,它没有我的Atom类的属性和方法。
因此,我问一个问题:我将如何获取已添加到QGraphicsScene中的Atom列表?
谢谢。
您需要将QGraphicsItems转换为Atoms。 请查看此问题以获取详细信息:
不会。您的商品不会转换为任何东西。 它们仍然是您的自定义类型。 在C ++中,派生类的所有对象也属于它们派生的类。 什么都不会转换,所以什么也不会丢失。
执行dynamic_cast<Atom*>(item)
,您将把您的物品取回。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.