Instead of mouse move event, use the itemChange handler to move the links.

This commit is contained in:
dfighter1985 2014-09-17 16:17:41 +02:00
parent fee6b431a0
commit 7b5bed2442
2 changed files with 14 additions and 5 deletions

View file

@ -101,7 +101,7 @@ private:
ExpressionNode::ExpressionNode( const QString &name, int slotCount, QGraphicsItem *parent ) :
QGraphicsItem( parent )
{
setFlags( QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsMovable );
setFlags( QGraphicsItem::ItemIsSelectable | QGraphicsItem::ItemIsMovable | QGraphicsItem::ItemSendsScenePositionChanges );
m_w = 100;
m_h = 100;
@ -323,7 +323,17 @@ QString ExpressionNode::build() const
return result;
}
void ExpressionNode::mouseMoveEvent( QGraphicsSceneMouseEvent *e )
QVariant ExpressionNode::itemChange( GraphicsItemChange change, const QVariant &value )
{
if( change == ItemScenePositionHasChanged )
{
onNodeMove();
}
return QGraphicsItem::itemChange( change, value );
}
void ExpressionNode::onNodeMove()
{
for( int i = 0; i < m_links.count(); i++ )
{
@ -333,8 +343,6 @@ void ExpressionNode::mouseMoveEvent( QGraphicsSceneMouseEvent *e )
link->nodeMoved();
}
QGraphicsItem::mouseMoveEvent( e );
}
void ExpressionNode::createSlots( int count)

View file

@ -68,9 +68,10 @@ public:
QString build() const;
protected:
void mouseMoveEvent( QGraphicsSceneMouseEvent *e );
QVariant itemChange( GraphicsItemChange change, const QVariant &value );
private:
void onNodeMove();
void createSlots( int count = 3 );
void paintSlots( QPainter *painter );