Qt中QTableView设置分页显示的三种方法

62 篇文章 104 订阅

1、已知所有数据的情况下,以MVC模式对数据进行分页处理:
参考链接:http://www.cnblogs.com/caomingongli/archive/2011/11/17/2252745.html
参考链接:https://blog.csdn.net/xujiali5172923/article/details/47835265

2、数据库很大的时候,QTableView会自动生成一个滑动条,通过设置滑动条的范围,设置页码
参考链接:https://blog.csdn.net/liuguangzhou123/article/details/8109089

3、如果是查询数据放入QTableView,可以通过更改查询条件的方式,分页显示,每次点击上一页/下一页就更新查询条件

model = new QSqlQueryModel(this);
 model->setQuery(QString("select num,time,ion,temperature,humidity from data_net where time between '%1' and '%2'").arg(table_query_begin).arg(table_query_end));

每次更改table_query_begin和table_query_end即可实现分页效果

  • 10
    点赞
  • 74
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
要在QTableView实现数据库分页显示,您需要使用QSqlTableModel。以下是一个示例代码: ```python from PyQt5.QtSql import QSqlDatabase, QSqlQuery, QSqlTableModel from PyQt5.QtCore import Qt class MyWindow(QMainWindow): def __init__(self): super().__init__() self.table_view = QTableView(self) self.setCentralWidget(self.table_view) self.database = QSqlDatabase.addDatabase("QSQLITE") self.database.setDatabaseName("mydatabase.db") if not self.database.open(): print("Unable to open database") self.model = QSqlTableModel(self, self.database) self.model.setTable("mytable") self.model.select() self.page_size = 50 self.current_page = 0 self.table_view.setModel(self.model) self.table_view.setSortingEnabled(True) self.table_view.verticalHeader().hide() self.table_view.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) self.update_table_view() def update_table_view(self): query = QSqlQuery(self.database) query.exec_("SELECT COUNT(*) FROM mytable") query.next() total_records = query.value(0) total_pages = total_records // self.page_size if total_records % self.page_size: total_pages += 1 self.model.setLimit(self.page_size) self.model.setOffset(self.current_page * self.page_size) self.model.select() self.table_view.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch) def previous_page(self): if self.current_page > 0: self.current_page -= 1 self.update_table_view() def next_page(self): if self.current_page < (total_pages - 1): self.current_page += 1 self.update_table_view() ``` 在这个示例代码,我们创建了一个QSqlTableModel,并将其设置QTableView的模型。我们还定义了每个页面的大小,并将当前页面设置为0。 update_table_view()方法用于更新QTableView显示的数据。它首先查询数据库的总记录数,然后计算总页数。然后,它使用setLimit()和setOffset()方法限制查询的记录数,并调用select()方法更新模型。 previous_page()和next_page()方法分别用于在QTableView向前或向后翻页。在这些方法,我们检查当前页面是否小于总页面数(在下一页方法)或大于0(在上一页方法),然后递增或递减当前页面并更新QTableView。 这是一个简单的方法来实现在QTableView使用分页显示数据库记录。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值