Пример #1
0
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()) );
    }
}
Пример #2
0
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);
}