我在我自己的子类中使用了以下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()返回的是不同的值。 怎么会发生这种情况,有没有解决方案?
答案 0 :(得分:0)
当所选状态即将发生变化时,将调用QGraphicsItem::ItemSelectedChange
。这意味着新选择的状态位于value
参数中。
您必须对所选状态已更改的QGraphicsItem::ItemSelectedHasChanged
做出反应。