Show all rotating cylinders and don't flicker due to the animation.

Also align the cylinders on a spiral for some hypnotic effect.

I find it simpler that way to figure out whether I see flickering
or whether everything is smooth.

Change-Id: Ia43f82f2c9aea8ace179984d96cfdc0cd82e88a1
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Optimize: use std::vector instead of QVector for the change queues.

Note that QVector::clear() frees memory, as does resize(0) now
apparently. This triggers repeated allocations after we distributed
the changes. Using std::vector instead, we can reuse the memory
leading to a noticeable performance improvement.

Change-Id: Ib08795a7ba3f893c13dad29f50641e4e2dc924e4
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>
Fix regression: Support properties of types inheriting from QNode.

The explicit check of the type against QNode* is much faster than
calling canConvert, but it breaks the logic. If a property is of
type T*, where T inherits from QNode, we would do the wrong thing.

This patch fixes this issue.

Change-Id: I06cb64e7afe96f590c822fbeca0ae396138230c9
Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
Reviewed-by: Sean Harmer <sean.harmer@kdab.com>