关于网友提出的“ 在QGraphicsScene中如何识别两个不同的item”问题疑问,本网通过在网上对“ 在QGraphicsScene中如何识别两个不同的item”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题: 在QGraphicsScene中如何识别两个不同的item
描述:qtc++
我有两个继承自QGraphicsRectItem的类。名为MyItem1和MyItem2。
现在有一个MyScene继承自QGraphicsScene。
Scene中加入item1 和 item2 分别是两个类实例化的对象。
重写他的mouseMoveEvent函数 。
如何区分这两类物体,用itemAt会返回 QGraphicsItem的指针。
然后找到资料用qgraphicsitem_cast
(itemAt())
转换itemAt下面的指针 编程 MyItem1的指针。
但Item1和Item2都转换成功了。
查阅资料,说要重写type()函数。
但是分别给MyItem1和MyItem2重写了type()函数以后。
转换便失败了。我的理想的结果应该是,MyItem2 转换失败,MyItem1转换成功。然后就将两类物体给区分开了。
不知道是不是用法有问题,请指教。
如果不写type()函数的话,又有点不严谨的感觉。
解决方案1: 既然你重写了,你自己定义一个类型就好了
enum ItemType
{
Shape = 0,
Line,
Image,
};
例如
MyItem1:type = shape;
MyItem2:type = line;
uint type() { return type; } 返回自己类型,然后就可以根据类型判断了
以上介绍了“ 在QGraphicsScene中如何识别两个不同的item”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/3568479.html