@_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?