C++ 是否有一种习惯用法可以将数据库查询添加到Qt模型?
我有一个QtQabstracteModel,底层信息在一个sqlite数据库中。我希望根据需要将数据库查询中的行以增量方式添加到模型中。但是,数据库获取可能很慢。我的问题是在修改模型之前需要调用beginInsertRows(),但它需要知道将添加多少行。在我进行查询之前,我不会知道这一点。这意味着我似乎有以下选择,所有这些都没有吸引力C++ 是否有一种习惯用法可以将数据库查询添加到Qt模型?,c++,qt,sqlite,model-view-controller,C++,Qt,Sqlite,Model View Controller,我有一个QtQabstracteModel,底层信息在一个sqlite数据库中。我希望根据需要将数据库查询中的行以增量方式添加到模型中。但是,数据库获取可能很慢。我的问题是在修改模型之前需要调用beginInsertRows(),但它需要知道将添加多少行。在我进行查询之前,我不会知道这一点。这意味着我似乎有以下选择,所有这些都没有吸引力 执行两个数据库查询:“选择COUNT(*)…”以获取结果行数,然后调用beginInsertRows(),并执行真正的查询。当然,缺点是一个潜在的昂贵查询必须执
谢谢。正确的方法是实现
qabstractemmodel::canFetchMore
和qabstractemmodel::fetchMore
。您是否也尝试使用内置的QSqlQueryModel
或QSqlTableModel
类?他们已经实现了这个行为。我正在这样做,但是当索引被扩展时,树视图似乎只调用了canFetchMore/fetchMore两次。我看到的是,如果每个fetch返回N行,则在第一次展开索引时,我的视图将显示2N行,即使结果集中还有其他行,也不会再次检查canFetchMore。这让我回到了索引第一次展开时必须获取所有行的情况,所以我又回到了同样的问题。有什么诀窍可以做到这一点吗?我没有尝试内置的SQL类,因为我使用的是一个非Qt应用程序也需要使用的内部库,所以我使用的是比原始sqlite略高一点的接口。