QT QTableView 翻页实现
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了QT QTableView 翻页实现相关的知识,希望对你有一定的参考价值。
参考技术A 主要使用QTableView( QTableWidget)中的三个函数:QTableView::verticalScrollBar()->setSliderPosition(); //设置当前滑动条的位置
QTableView::verticalScrollBar()->maximum(); //滑动条能移动的最大位置
QTableView::verticalScrollBar()->value(); //获得当前滑动条的位置
#include<QScrollBar>//滑动条
#include<QTableView>
int Widget::pageCount(QTableView *p)//QTableView 总页数
if(p == NULL) return -1;
int rowCount = p->model()->rowCount();
int rowHeight = p->rowHeight(0);
int tableViewHeight = p->height();
int rowCountPerPage = tableViewHeight/rowHeight-1;//每页显示行数
int ret = rowCount/rowCountPerPage;
int tem = rowCount%rowCountPerPage;
if (tem != 0) ret++;
return ret;
void Widget::pageTo(QTableView *p, int pageNO)//翻到指定页
if(p == NULL) return ;
int maxPage = pageCount(p);
if(pageNO > maxPage) return ;
int rowCount = p->model()->rowCount();
int rowHeight = p->rowHeight(0);
int tableViewHeight = p->height();
int rowCountPerPage = tableViewHeight/rowHeight-1; //每页显示行数
int canNotViewCount = rowCount-rowCountPerPage; //看不见的行数
if(canNotViewCount == 0) return ;
int maxValue = p->verticalScrollBar()->maximum(); // 当前SCROLLER最大显示值
if(maxValue == 0) return ;
int pageValue = (maxValue*rowCountPerPage)/canNotViewCount;
p->verticalScrollBar()->setSliderPosition(pageValue*(pageNO-1));
void Widget::pageUp(QTableView *p)//上翻
if(p == NULL) return ;
int rowCount = p->model()->rowCount();
int rowHeight = p->rowHeight(0);
int tableViewHeight = p->height();
int rowCountPerPage = tableViewHeight/rowHeight-1; //每页显示行数
int canNotViewCount = rowCount-rowCountPerPage; //看不见的行数
if(canNotViewCount == 0) return ;
int maxValue = p->verticalScrollBar()->maximum(); // 当前SCROLLER最大显示值
if(maxValue == 0) return ;
int pageValue = (maxValue*rowCountPerPage)/canNotViewCount;
int nCurScroller = p->verticalScrollBar()->value(); //获得当前scroller值
if(nCurScroller>0)
p->verticalScrollBar()->setSliderPosition(nCurScroller-pageValue);
else
// if(isLoop == TRUE)
p->verticalScrollBar()->setSliderPosition(maxValue);
void Widget::pageDown(QTableView *p)//下翻
if(p == NULL) return ;
int rowCount = p->model()->rowCount();
int rowHeight = p->rowHeight(0);
int tableViewHeight = p->height();
int rowCountPerPage = tableViewHeight/rowHeight-1; //每页显示行数
int canNotViewCount = rowCount-rowCountPerPage; //看不见的行数
if(canNotViewCount == 0)
return ;
int maxValue = p->verticalScrollBar()->maximum(); // 当前SCROLLER最大显示值
if(maxValue == 0)
return ;
int pageValue = (maxValue*rowCountPerPage)/canNotViewCount;
int nCurScroller = p->verticalScrollBar()->value(); //获得当前scroller值
if(nCurScroller
p->verticalScrollBar()->setSliderPosition(nCurScroller+pageValue);
else
// if(isLoop == TRUE)
p->verticalScrollBar()->setSliderPosition(0);
void Widget::pageHome(QTableView *p)//首页
if(p == NULL) return ;
int maxValue = p->verticalScrollBar()->maximum(); // 当前SCROLLER最大显示值
if(maxValue == 0) return ;
p->verticalScrollBar()->setSliderPosition(0);
void Widget::pageEnd(QTableView *p)//末页
if(p == NULL) return ;
int maxValue = p->verticalScrollBar()->maximum(); // 当前SCROLLER最大显示值
if(maxValue == 0) return ;
p->verticalScrollBar()->setSliderPosition(maxValue);
EDD:
在QT UI 界面实现设置相应的按钮点击实现就可。
QTableView和QTableWidget翻页功能实现-阿里云开发者社区
https://blog.csdn.net/liuguangzhou123/article/details/8109089
QTableView和QTableWidget翻页功能实现
本文转载自:http://blog.chinaunix.net/uid-25520556-id-2211406.html
主要使用QTableView和QTableWidget中的三个函数实现
QTableView::verticalScrollBar()->setSliderPosition(); //设置当前滑动条的位置
QTableView::verticalScrollBar()->maximum(); //滑动条能移动的最大位置
QTableView::verticalScrollBar()->value(); //获得当前滑动条的位置
实现代码如下:
static int nCurScroller=0; //翻页时的当时滑动条位置
static int pageValue = 10; // 一页显示条数
/***下一页***/
void SplayHisForm::nextPageHis()
{
int maxValue = ui.TableWidget->verticalScrollBar()->maximum(); // 当前SCROLLER最大显示值
nCurScroller = ui.TableWidget->verticalScrollBar()->value(); //获得当前scroller值
if(nCurScroller<maxValue)
ui.TableWidget->verticalScrollBar()->setSliderPosition(pageValue+nCurScroller);
else
ui.TableWidget->verticalScrollBar()->setSliderPosition(0);
}
/***上一页***/
void SplayHisForm::prePageHis()
{
int maxValue = ui.TableWidget->verticalScrollBar()->maximum(); // 当前SCROLLER最大显示值
nCurScroller = ui.TableWidget->verticalScrollBar()->value();
if(nCurScroller>0)
ui.TableWidget->verticalScrollBar()->setSliderPosition(nCurScroller-pageValue);
else
ui.TableWidget->verticalScrollBar()->setSliderPosition(maxValue);
}
效果如下:
以上是关于QT QTableView 翻页实现的主要内容,如果未能解决你的问题,请参考以下文章
QT QTableView(基于QStandardItemModel用法)操作详解
QT QTableView(基于QStandardItemModel用法)操作详解
QT QTableView(基于QStandardItemModel用法)操作详解
QTableWidget和 QTableView翻页效果(准确计算Scroll,然后使用setSliderPosition函数)