QML-Tableview でローカルの db-File から SQL データを表示し、さらに sql-database を編集したいと考えています。約 3 週間後にできたこと: QML-Tableview でデータを表示する。本当に QSqlTableModel をサブクラス化する必要があるかどうかはわかりません。サブクラス化がまったく必要ない場合は、間違いなく喜んでいます。
私のmain.cppでは、次のようにしてモデルを作成し、レコードを直接追加する必要があります。
// Create an instance of the SqlModel for accessing the data
SqlDataModel *sqlModel;
sqlModel = new SqlDataModel(0,base.database());
sqlModel->setTable("diaBaneDatabase");
sqlModel->setSort(0, Qt::AscendingOrder);
sqlModel->setEditStrategy(QSqlTableModel::OnFieldChange);
sqlModel->select();
QSqlRecord record(sqlModel->record());
record.setValue(0,50);
record.setValue(3,222);
sqlModel->insertRecord(-1, record);
sqlModel->submitAll();
これにより、4 列目に 222 が追加されます。しかし、私のsqlDatabaseには何も保存されません
私の SqlDataModel::setData は次のようになります。
bool SqlDataModel::setData(const QModelIndex &index, const QVariant &value, int role)
{
qDebug() << index.column() << " " << index.row() << " " << value << " ---- " << role;
qDebug() << roles[Qt::UserRole + 1];
//qDebug() << QSqlTableModel::setData(modelIndex, value);
qDebug() << QSqlQueryModel::setData(index, value);
return false;
}
出力は次のようになります。
0 39 QVariant(int, 50) ---- 2
"id"
false
1 39 QVariant(QString, "") ---- 2
"id"
false
2 39 QVariant(QString, "") ---- 2
"id"
false
3 39 QVariant(int, 222) ---- 2
"id"
false
4 39 QVariant(double, 0) ---- 2
"id"
false
5 39 QVariant(int, 0) ---- 2
"id"
false
6 39 QVariant(double, 0) ---- 2
"id"
false
7 39 QVariant(double, 0) ---- 2
"id"
false
確かに私のsetDataメソッドは間違っていますが、そこで何が起こるべきか理解できず、この例は見つかりませんでした.
QSqlTableModel をサブクラス化してモデルを QQmlContext から QML に配置し、列の名前のような名前の役割を持つ列を表示できるようにする必要があるという私の仮定は間違っていますか? そうでない場合、どうすれば列1の内容をQMLTableviewに入れることができますか:
TableViewColumn {
role: "id" // what should be the role if I don't subclass???
title: "ID"
width: 80
}
ヘルプ、コメント、例、他の投稿、または私をさらに前進させるものは何でも嬉しいです...ありがとう