10

可能是一个棘手的问题,但我找不到答案。

我需要知道 QGraphicsItem 何时被选中。必须有一个被调用的方法。

我知道QGraphicsItem::itemChange(),但它被称为太频繁了。

有没有更好的方法?

谢谢

编辑:有了这个

if(change == ItemSelectedChange && scene()){
    cout << "haha " << i++ << endl;
}

每次选择更改我都会接到两个电话。

4

2 回答 2

17

您应该value考虑 QGraphicsItem::itemChange 方法。你想要的可能是这样的:

QVariant YourItem::itemChange(GraphicsItemChange change, const QVariant &value)
{
    if (change == QGraphicsItem::ItemSelectedChange)
    {
        if (value == true)
        {
            // do stuff if selected
        }
        else
        {
            // do stuff if not selected
        }
    }

    return QGraphicsItem::itemChange(change, value);
}
于 2012-04-23T20:54:22.200 回答
0

QGraphicsScene::selectionChanged

于 2012-04-23T20:11:18.430 回答