10

おそらくひっかけ問題ですが、答えが見つかりません。

QGraphicsItem がいつ選択されるかを知る必要があります。呼び出されるメソッドが存在する必要があります。

私は知ってQGraphicsItem::itemChange()いますが、あまりにも頻繁に呼び出されます。

より良い方法はありますか?

どうも

編集:これで

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

選択を変更するたびに 2 回電話がかかってきます。

4

2 に答える 2

17

valueQGraphicsItem::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 に答える