1

QTableView で QSqlTableModel を使用しようとしていますが、updated_date と created_date の 2 つの列を簡単に非表示にしたいのですが、ユーザーが TableView でデータを編集できるようにしたいのですが、終了時 (またはそのデータを送信するとき)自動的に updated_date が現在の日時に更新されます。データベースエンジンからではなく、プログラムがそれを行う必要があります。これを行うには、どのような手順に従う必要がありますか? setData メソッドの実装を考えていますが、方法がわかりません。お時間をいただき、ありがとうございました。

4

1 に答える 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 に答える