在qt中,使用qsqltablemodel新增一行,如何填充默认值
时间: 2023-06-24 12:08:23 浏览: 110
QT Mysql数据库通过QSqlTableModel在TableView中显示,支持翻页等功能
5星 · 资源好评率100%
可以在 `QSqlTableModel` 子类的 `beforeInsert()` 函数中设置新行的默认值。
例如,如果我们想在插入新行时自动填充日期和时间列,可以这样实现:
```cpp
class MyTableModel : public QSqlTableModel
{
public:
MyTableModel(QObject *parent = nullptr, QSqlDatabase db = QSqlDatabase())
: QSqlTableModel(parent, db)
{}
protected:
void beforeInsert(QSqlRecord &record) override
{
// 调用父类的默认实现
QSqlTableModel::beforeInsert(record);
// 设置默认值
QDateTime now = QDateTime::currentDateTime();
record.setValue("date_col", now.date());
record.setValue("time_col", now.time());
}
};
```
然后在新建 `MyTableModel` 对象时,将其设置为 `QTableView` 的模型即可:
```cpp
QTableView *tableView = new QTableView;
MyTableModel *model = new MyTableModel;
model->setTable("my_table");
model->select(); // 加载数据
tableView->setModel(model);
```
这样,当用户在 `QTableView` 中插入新行时,日期和时间列将会自动填充当前日期和时间。
阅读全文