首页 > 代码库 > QTableWidget和 QTableView翻页效果(准确计算Scroll,然后使用setSliderPosition函数)
QTableWidget和 QTableView翻页效果(准确计算Scroll,然后使用setSliderPosition函数)
以QTableView举例,QTableWidget使用相同
int CQTTableViewPageSwitch::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;
}
BOOL CQTTableViewPageSwitch::pageTo(QTableView *p, int pageNO)//翻到指定页
{
if(p == NULL) return false;
int maxPage = pageCount(p);
if(pageNO > maxPage) return false;
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 false;
int maxValue = http://www.mamicode.com/p->verticalScrollBar()->maximum(); // 当前SCROLLER最大显示值
if(maxValue =http://www.mamicode.com/= 0) return false;
int pageValue = http://www.mamicode.com/(maxValue*rowCountPerPage)/canNotViewCount;
p->verticalScrollBar()->setSliderPosition(pageValue*(pageNO-1));
}
BOOL CQTTableViewPageSwitch::pageUp(QTableView *p,BOOL isLoop)//上翻
{
if(p == NULL) return false;
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 false;
int maxValue = http://www.mamicode.com/p->verticalScrollBar()->maximum(); // 当前SCROLLER最大显示值
if(maxValue =http://www.mamicode.com/= 0) return false;
int pageValue = http://www.mamicode.com/(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);
}
}
BOOL CQTTableViewPageSwitch::pageDown(QTableView *p,BOOL isLoop)//下翻
{
if(p == NULL) return false;
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 false;
int maxValue = http://www.mamicode.com/p->verticalScrollBar()->maximum(); // 当前SCROLLER最大显示值
if(maxValue =http://www.mamicode.com/= 0)
return false;
int pageValue = http://www.mamicode.com/(maxValue*rowCountPerPage)/canNotViewCount;
int nCurScroller = p->verticalScrollBar()->value(); //获得当前scroller值
if(nCurScroller<maxValue)
p->verticalScrollBar()->setSliderPosition(nCurScroller+pageValue);
else
{
if(isLoop == TRUE)
p->verticalScrollBar()->setSliderPosition(0);
}
}
BOOL CQTTableViewPageSwitch::pageHome(QTableView *p)//首页
{
if(p == NULL) return false;
int maxValue = http://www.mamicode.com/p->verticalScrollBar()->maximum(); // 当前SCROLLER最大显示值
if(maxValue =http://www.mamicode.com/= 0) return false;
p->verticalScrollBar()->setSliderPosition(0);
}
BOOL CQTTableViewPageSwitch::pageEnd(QTableView *p)//末页
{
if(p == NULL) return false;
int maxValue = http://www.mamicode.com/p->verticalScrollBar()->maximum(); // 当前SCROLLER最大显示值
if(maxValue =http://www.mamicode.com/= 0) return false;
p->verticalScrollBar()->setSliderPosition(maxValue);
}
http://blog.csdn.net/liuguangzhou123/article/details/8109089
QTableWidget和 QTableView翻页效果(准确计算Scroll,然后使用setSliderPosition函数)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。