В 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?