我试图将QSqlTableModel与QTableView一起使用,但我想隐藏updated_date和created_date这两列,这很容易,但我希望用户可以在TableView中编辑数据,当完成(或提交数据时)时,updated_date会自动更新到当前日期时间。我需要程序来完成,而不是从数据库引擎。 要做到这一点,我应该遵循哪些步骤?我一直在考虑实现setData方法,但我不知道如何实现。 非常感谢您的时间和帮助。
你可以重新实现 setData() 您的功能 QSqlTableModel subclass和make如下:
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); }
但我还是建议您使用数据库触发器来完成此任务。