В qt3.3.3 в QValueList функция remove выглядит так:
    
    Q_ASSERT ( it.node != node );
    NodePtr next = it.node->next;
    NodePtr prev = it.node->prev;
    prev->next = next;
    next->prev = prev;
    delete it.node;
    nodes--;
    return Iterator( next );
А как она последний элемент удалит? Проверок то нет никаких...
Или последний можно только функцией clear?