您的位置:首页 > 编程语言 > Qt开发

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);

}
http://blog.csdn.net/liuguangzhou123/article/details/8109089
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐