1

我正在尝试将 QSqlTableModel 与 QTableView 一起使用,但我想隐藏 2 列 updated_date 和 created_date,这很容易,但我希望用户可以在 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 回答