QModelIndex::data() реализован так, что возвращает QAbstractItemModel::data(). Вы переопределяете QAbstractItemModel::data() и вызываете в нём QModelIndex::data(), чтобы получить значение. Происходит бесконечный взаимный вызов функций и программа вылетает. В общем, для получения текущего значения в QAbstractItemModel::data() необходимо использовать метод родительского класса:
QVariant value = QSqlQueryModel::data(index, role);