如何在TableView中更改数据时保存updated_date?

时间:2013-10-27 15:33:08

标签: sql qt qtableview qsqltablemodel

我正在尝试将QSqlTableModel与QTableView一起使用,但我想隐藏2列updated_date和created_date,这很简单,但我希望用户可以编辑TableView中的数据,并在完成时(或者提交时)该数据)自动将updated_date更新为当前日期时间。我需要程序来做,而不是从数据库引擎。 我应该采取什么步骤来做到这一点?我在考虑实现setData方法,但我不知道如何。 非常感谢您的时间和帮助。

1 个答案:

答案 0 :(得分:0)

您可以重新实现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);
}

但我建议你使用数据库触发器来完成这项任务。