@tmladek
You are comparing QVariants that contain QList<Cat>, so you need to provide registered comparison operator for QList<Cat> (or conversions might take place), which you don't do.

PS.
Also, this:

qRegisterMetaType<Cat>("Cat");

should be:

qRegisterMetaType<Cat>();

as specifically mentioned in the documentation.