Исследование показало, что QRelationalTableMode.selectStatement возвращает запрос следующего вида:
SELECT tbl.fld1, relTblAl_1.fld1 AS reftbl1_fld1_2, relTblAl_2.fld1, relTblAl_3.fld1, tbl.fld2, tbl.fld3, FROM tbl, reftbl1 relTblAl_1, reftbl1 relTblAl_2, reftbl2 relTblAl_3 WHERE ( tbl.fkfld1 = relTblAl_1.pkfld AND tbl.fkfld2 = relTblAl_2.pkfld AND tbl.fkfld3 = relTblAl_3.pkfld ) ORDER BY tbl.sortfld ASC
Это INNER JOIN, который действительно не выбирает строки с пустыми ссылками. Выход напрашивается - переписать selectStatement, что бы он возвращал правильный запрос, использующий LEFT JOIN. Тогда выберутся все строки таблицы.