QTableWidget和 QTableView翻页效果(准确计算Scroll,然后使用setSliderPosition函数)
2017-02-03 07:24
1031 查看
以QTableView举例,QTableWidget使用相同
intCQTTableViewPageSwitch::pageCount(QTableView*p)//QTableView总页数
{
if(p==NULL)return-1;
introwCount=p->model()->rowCount();
introwHeight=p->rowHeight(0);
inttableViewHeight=p->height();
introwCountPerPage=tableViewHeight/rowHeight-1;//每页显示行数
intret=rowCount/rowCountPerPage;
inttem=rowCount%rowCountPerPage;
if(tem!=0)ret++;
returnret;
}
BOOLCQTTableViewPageSwitch::pageTo(QTableView*p,intpageNO)//翻到指定页
{
if(p==NULL)returnfalse;
intmaxPage=pageCount(p);
if(pageNO>maxPage)returnfalse;
introwCount=p->model()->rowCount();
introwHeight=p->rowHeight(0);
inttableViewHeight=p->height();
introwCountPerPage=tableViewHeight/rowHeight-1; //每页显示行数
intcanNotViewCount=rowCount-rowCountPerPage; //看不见的行数
if(canNotViewCount==0)returnfalse;
intmaxValue=p->verticalScrollBar()->maximum(); //当前SCROLLER最大显示值
if(maxValue==0)returnfalse;
intpageValue=(maxValue*rowCountPerPage)/canNotViewCount;
p->verticalScrollBar()->setSliderPosition(pageValue*(pageNO-1));
}
BOOLCQTTableViewPageSwitch::pageUp(QTableView*p,BOOLisLoop)//上翻
{
if(p==NULL)returnfalse;
introwCount=p->model()->rowCount();
introwHeight=p->rowHeight(0);
inttableViewHeight=p->height();
introwCountPerPage=tableViewHeight/rowHeight-1; //每页显示行数
intcanNotViewCount=rowCount-rowCountPerPage; //看不见的行数
if(canNotViewCount==0)returnfalse;
intmaxValue=p->verticalScrollBar()->maximum(); //当前SCROLLER最大显示值
if(maxValue==0)returnfalse;
intpageValue=(maxValue*rowCountPerPage)/canNotViewCount;
intnCurScroller=p->verticalScrollBar()->value(); //获得当前scroller值
if(nCurScroller>0)
p->verticalScrollBar()->setSliderPosition(nCurScroller-pageValue);
else
{
if(isLoop==TRUE)
p->verticalScrollBar()->setSliderPosition(maxValue);
}
}
BOOLCQTTableViewPageSwitch::pageDown(QTableView*p,BOOLisLoop)//下翻
{
if(p==NULL)returnfalse;
introwCount=p->model()->rowCount();
introwHeight=p->rowHeight(0);
inttableViewHeight=p->height();
introwCountPerPage=tableViewHeight/rowHeight-1; //每页显示行数
intcanNotViewCount=rowCount-rowCountPerPage; //看不见的行数
if(canNotViewCount==0)
returnfalse;
intmaxValue=p->verticalScrollBar()->maximum(); //当前SCROLLER最大显示值
if(maxValue==0)
returnfalse;
intpageValue=(maxValue*rowCountPerPage)/canNotViewCount;
intnCurScroller=p->verticalScrollBar()->value(); //获得当前scroller值
if(nCurScroller<maxValue)
p->verticalScrollBar()->setSliderPosition(nCurScroller+pageValue);
else
{
if(isLoop==TRUE)
p->verticalScrollBar()->setSliderPosition(0);
}
}
BOOLCQTTableViewPageSwitch::pageHome(QTableView*p)//首页
{
if(p==NULL)returnfalse;
intmaxValue=p->verticalScrollBar()->maximum();//当前SCROLLER最大显示值
if(maxValue==0)returnfalse;
p->verticalScrollBar()->setSliderPosition(0);
}
BOOLCQTTableViewPageSwitch::pageEnd(QTableView*p)//末页
{
if(p==NULL)returnfalse;
intmaxValue=p->verticalScrollBar()->maximum();//当前SCROLLER最大显示值
if(maxValue==0)returnfalse;
p->verticalScrollBar()->setSliderPosition(maxValue);
}
相关文章推荐
- QTableWidget和 QTableView翻页效果(准确计算Scroll,然后使用setSliderPosition函数)
- cocos2dx ccscrollview 实现翻页效果
- 使用HorizontalScrollView实现侧滑效果(1)
- 使用HorizontalScrollView和ViewPager联动效果出现的position值改变问题
- Android 使用PullToZoomScrollViewEx实现头像下拉缩放动态效果
- 使用 scroll-view 标签,实现文字水平方向(从左至右)跑马灯效果
- 相册翻页效果ScrollView+pageControl
- 使用HorizontalScrollView实现侧滑效果(2)
- 使用viewpager嵌套实现上下左右滑动切换图片(IOS双向滚动翻页效果相同)
- 使用 HorizontalScrollView 实现水平滚动,并点击有相应的反应效果
- 51.使用HorizontalScrollView+LinearLayout实现文字+图片的自动跑马灯效果
- android开发之&使用ViewPager加gridView实现菜单按钮分页滑动(类似QQ表情选择翻页效果)
- 使用NestedScrollView+ViewPager+RecyclerView+SmartRefreshLayout打造酷炫下拉视差效果并解决各种滑动冲突
- 使用HorizontalScrollView实现侧滑效果(3)
- 使用ScrollView实现滚动效果 出现 ScrollView can host only one direct child (ScrollView只能包裹一个直接子元素)
- Android 使用HorizontalScrollView 实现Gallery效果
- 使用HorizontalScrollView实现水平控件拖动效果
- 使用NestedScrollView+ViewPager+RecyclerView+SmartRefreshLayout打造酷炫下拉视差效果并解决各种滑动冲突
- 使用viewpager嵌套实现上下左右滑动切换图片(IOS双向滚动翻页效果相同)
- 使用UGUI ScrollView 排列不规则内容元素实现滑动效果