最近在使用QTableWidget时,因为结果数量比较多而且又有单元格控件,为了改善效率要做分页处理。在网上找了一番,最后在http://www.cppblog.com/biao/archive/2011/10/30/159350.html 基础上修改而来,首先感谢原作者。
改后的版本:http://files.cnblogs.com/files/roadbike/PageNavigator.7z
新的效果如下图(windows系统):
改动点:
点击页码标签后,若之前有手工输入页码,先清除之;
解决页码标签内存泄漏;
页码标签padding增大为6,方便点击(可能是系统的差别,看着原版截图边距也蛮大的,在我的win10就挨得很近);
上一页、下一页与页码之间增加分隔符,避免如点击下一页时误点到页码(页码标签长度变化时比较容易点错);
setStyleSheet挪到构造函数中;
调整代码格式与类命名、统一参数命名等使其符合我们项目的标准;
其他小改动不太记得了 O(∩_∩)O哈哈哈~
使用方法,引用原文,并把类名等更新了:
// 把分页组件加入到当前窗口
pageNavigator = new PageNavigator();
layout()->addWidget(pageNavigator);
当总页数改变时(如查询数据库操作得到总页数),只需要调用pageWidget的两个函数
void Widget::changeMaxPage() {
pageNavigator->setMaxPage(ui->lineEdit->text().toInt());
pageNavigator->setCurrentPage(1);
}
当pageNavigator上的页码被点击后,会发射void currentPageChanged(int page)信号,然后主窗口里再作出相应反应,如查询分页查询数据库