我有个小问题
我正在编写 Petri Net 模拟器...
我有两个不同的类(class)
class PNItem : public QObject, public QGraphicsItem
...
和
class PNEdge : public QGraphicsLineItem
当我打电话时...
QGraphicsItem *QGraphicsScene::ItemAt(//cursor position)
,有没有可能以某种方式了解我点击了什么项目?分别ItemAt 给了什么元素?
最佳答案
GraphicsItem::type()旨在解决这个问题。
所以你会做这样的事情,例如:
enum ItemType { TypePNItem = QGraphicsItem::UserType + 1,
TypePNEdge = QGraphicsItem::UserType + 2 }
class PNItem : public QObject, public QGraphicsItem {
public:
int type() { return TypePNItem; }
...
};
这将允许您这样做:
QGraphicsItem *item = scene->itemAt( x, y );
switch( item->type() )
{
case PNItem:
...
break;
}
这样做还可以使用 qgraphicsitem_cast
关于qt - QGraphicsScene::itemAt() - 如何识别自定义类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10114812/