void NodeItem::moveBy(double dx, double dy) { QCanvasEllipse::moveBy( dx, dy ); // 使用父類別的moveBy函數 QPtrListIterator<EdgeItem> it1( inList ); // 設定it1為指到QPtrList的指標變數 EdgeItem *edge; // 若it1指到的位置存放的EdgeItem的指標不是0時,則執行大括號內的指令,直到edge為空指標 while (( edge = it1.current() )) { ++it1; edge->setToPoint( int(x()), int(y()) ); } QPtrListIterator<EdgeItem> it2( outList ); while (( edge = it2.current() )) { ++it2; edge->setFromPoint( int(x()), int(y()) ); } }
QVariant NodeItem::itemChange(GraphicsItemChange change, const QVariant &value) { if (change == ItemPositionHasChanged) { Q3PtrListIterator<EdgeItem> it1( inList ); EdgeItem *edge; while (( edge = it1.current() )) { ++it1; edge->setToPoint( int(x()), int(y()) ); } Q3PtrListIterator<EdgeItem> it2( outList ); while (( edge = it2.current() )) { ++it2; edge->setFromPoint( int(x()), int(y()) ); } } return QGraphicsEllipseItem::itemChange(change, value); }