@_compiler

Model *derived = static_cast<QSqlQueryModel*>(model);

This isn't a valid cast because you can't implicitly cast to a derived type (see @mrjj's comment).

Model *derived = static_cast<Model *>(model);

Is valid but unsafe, as @SGaist pointed out.

Ultimately, what is not working?