首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用QSqlQueryModel进行QT分页

使用QSqlQueryModel进行QT分页
EN

Stack Overflow用户
提问于 2019-09-24 08:49:00
回答 2查看 628关注 0票数 0

我正在寻找使用QSqlQueryModel创建分页的解决方案。

我遇到的问题是,我想使用分页从sql文件中提取数据,为此我选择了QSqlQueryModel。但现在的问题是,我无法控制它将获取多少记录。

基本上,如果数据库中有1000条记录,我希望最初只获取20个条目,然后在另一个调用上休息,再调用20个条目,然后再调用20个条目,以此类推。怎么做?

到目前为止,代码是

代码语言:javascript
复制
QSqlQueryModel *model = new QSqlQueryModel;
QSqlDatabase db = QSqlDatabase::addDatabase("QSQLITE");
db.setDatabaseName("/Users/xyz/events.db");

if (db.isValid())
{
    db.open();
    if (db.isOpen())
    {
        model->setQuery("select * from events");

        qDebug() << "I m Working";
        QSqlRecord rec = model->record(0);
        qDebug() << rec;
        qDebug() << model->canFetchMore();

        db.close();

    } else {
        qDebug() << "DB is not open";
    }
} else {
    qDebug() << "DB is not valid";
}

canFetchMore()函数存在于QSqlQueryModel中。因此,如果setQuery获取所有数据,那么它将始终是错误的,而不是如何调整它,因此我可以使用fetchmore()以受控的方式获取更多的数据。

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-09-24 12:53:32

如果您想知道QSqlQueryModel是如何工作的,应该查看源代码。类句柄(应该处理)部分开箱即用,您不需要实现自己的机制。

基本上,如果视图由于向下滚动而需要显示更多的项,模型将获取另一组(根据实现)行,并将其追加到底部。

基本上,所有模型的目标都是提供性能高效的获取。其主要思想是,视图在需要显示数据时,就会从其模型中请求更多的数据。如果您有1000个数据项,并且视图不能同时显示它们,则不需要全部1000个数据项。如果调试模型,您将看到QAbstractItemModel::data()函数是如何调用的,以及使用哪些参数:只提供了可见的模型索引。

票数 1
EN

Stack Overflow用户

发布于 2019-09-24 09:48:22

你想要的是分页/分页,不是吗?来自https://doc.qt.io/qt-5/qsqlquerymodel.html#details

QSqlQueryModel是一个用于执行SQL语句和遍历结果集的高级接口.它构建在较低级别的QSqlQuery之上,可用于提供数据以查看类(如QTableView )。

这里有一个在sqlite中分页的问题。在拥有数百万记录的SQLite中高效分页

使用sql https://learn.microsoft.com/en-us/previous-versions/sql/compact/sql-server-compact-4.0/gg699618(v=sql.110)?redirectedfrom=MSDN

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58076440

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档