以下は、デバッグ用に変更された、QSqlRelationTableModel から派生したクラス QLSqlTableModel のメンバー関数です。
void QLSqlTableModel::setQLData(int row, int column, QVariant value){
QModelIndex qmi = index(row, column);
QVariant originalVal = qmi.data();
bool isSet = setData(qmi, value);
QVariant newVal = qmi.data();
}
デバッガーで実行すると、値は次のようになります。
value = "B"
originalValue = "A"
isSet = true
newVal = "A"
何らかの理由で、setData() は true を返しますが、実際には新しいデータ値を設定していません。私のテーブルの実装は次のとおりです。
QLSqlTableModel *model = new QLSqlTableModel(NULL, db);
model->setTable("tableName");
model->setEditStrategy(QSqlRelationalTableModel::OnManualSubmit);
model->generateRoleNames();
model->select();