我有一个小问题
我正在编程 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
另见:QGraphicsItem::UserType
关于qt - QGraphicsScene::itemAt() - 如何识别自定义类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10114812/