QGraphicsItem itemChange函数与项目的状态不匹配?

时间:2014-11-06 05:49:32

标签: c++ qt qgraphicsitem

我在我自己的子类中使用了以下itemChange函数来触发信号:

    QVariant WayPointItem::itemChange(QGraphicsItem::GraphicsItemChange change, const QVariant &value)
    {
        if (change == QGraphicsItem::ItemSelectedChange){
            emit selcState(value.toBool());
        }
        return QGraphicsItem::itemChange(change, value);
    }

selcState信号连接到插槽:

void WaypointLineItem::toggleText(bool value)
{
    if (wp->isSelected()) //wp is the waypointitem which emit the signal selcState()
        text.show();
    else
        text.hide();
}

我发现当我选择一个waypointitem时,它确实触发了itemChange函数,而QGraphicsItem :: ItemSelectedChange的bool值也是正确的。 但是,当涉及到插槽时,wp-> isSelected()返回的是不同的值。 怎么会发生这种情况,有没有解决方案?

1 个答案:

答案 0 :(得分:0)

当所选状态即将发生变化时,将调用QGraphicsItem::ItemSelectedChange。这意味着新选择的状态位于value参数中。

您必须对所选状态已更改的QGraphicsItem::ItemSelectedHasChanged做出反应。