0
再次嘗試實現bezier曲線的重做器。有QGraphicsItem setPos()未觸發
class BezierNode : public QGraphicsItem
BezierNode::BezierNode(QPointF point, Type type) : QGraphicsItem()
{
setPos(point);
setFlags(ItemIsMovable | ItemSendsScenePositionChanges | ItemSendsGeometryChanges);
}
它正確地繞着場景上mousePress +的mouseMove,我能趕上在itemChange()
事件與控制點一些額外的演技。在QGraphicsItem::mouseMoveEvent()
(根據Qt來源gitorious)有一個電話item->setPos(...)
。但是,如果我嘗試重新實現BezierNode::setPos(..)
,它從未觸發移動對象。
void BezierNode::setPos(const QPointF &pos) {
qDebug() << "setPos " << pos;
m_point = pos;
QGraphicsItem::setPos(pos);
}
在我的情況setPos()
觸發僅在構造函數(還有我手動調用它)。是的,它正確地在場景中移動,我可以通過pos()
獲得它的位置,並在任何地方使用它而不是m_point,但是我想了解,那裏會發生什麼。
在此先感謝。
所以我應該把所有的鉤子放在'itemChange()'中? – ProdoElmit 2014-10-09 14:11:05
我不確定你實際上想要做什麼 - 爲什麼不能使用pos()函數的返回值而不是擁有自己的'm_point'成員? – Mitch 2014-10-09 14:28:49