@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.