QTableView で QSqlTableModel を使用しようとしていますが、updated_date と created_date の 2 つの列を簡単に非表示にしたいのですが、ユーザーが TableView でデータを編集できるようにしたいのですが、終了時 (またはそのデータを送信するとき)自動的に updated_date が現在の日時に更新されます。データベースエンジンからではなく、プログラムがそれを行う必要があります。これを行うには、どのような手順に従う必要がありますか? setData メソッドの実装を考えていますが、方法がわかりません。お時間をいただき、ありがとうございました。
質問する
426 次
1 に答える
1
サブクラスsetData()
の機能を再実装して、次のようにすることができます。QSqlTableModel
virtual bool YourModel::setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole)
{
if (index.column() != updated_date) {
QSqlTableModel::setData(index(index.row(), updated_date), QDate::currentDate(), role);
}
return QSqlTableModel::setData(index, value, role);
}
ただし、このタスクにはデータベース トリガーを使用することをお勧めします。
于 2013-10-27T15:58:25.457 に答える