由于某些(嗯,性能)原因,Qt 的“模型”类仅从数据库中获取 256 行,因此如果您想将该行附加到记录集的末尾,显然,您必须按照以下方式进行操作
while (model->canFetchMore()) {
model->fetchMore();
}
这确实有效,当您model->insertRow(model->rowCount())
之后执行此操作时,该行确实会附加在记录集的最后一行之后。
还有与此行为相关的各种其他问题,例如当您从模型中插入或删除行时,呈现它的视图将被重绘,仅显示 256 行,您必须手动确保再次获取丢失的行。
有没有办法完全绕过这种行为?我的模型不太可能显示多于 1000 行,但是让它检索这 1000 行似乎是一件非常痛苦的事情。我知道,如果您必须处理更大的记录集,这是一个很好的性能优化,但对我来说,这是一种负担,而不是一种恩惠。
该模型需要是可写的,所以我不能简单地使用 QSqlQueryModel 代替 QSqlRelationalTableModel。