я использовал следующую функцию itemChange из моего собственного подкласса, чтобы вызвать сигнал, как:Функция 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, а значение bool QGraphicsItem :: ItemSelectedChange также корректно. Однако, когда дело доходит до слота, wp-> isSelected() возвращает значение, которое отличается. Как это могло случиться, есть ли какое-либо решение?