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 = p->verticalScrollBar()->maximum(); // 当前SCROLLER最大显示值
if(maxValue == 0) return false;
int pageValue = (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 = p->verticalScrollBar()->maximum(); // 当前SCROLLER最大显示值
if(maxValue == 0) return false;
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);
}
}
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 = p->verticalScrollBar()->maximum(); // 当前SCROLLER最大显示值
if(maxValue == 0)
return false;
int pageValue = (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 = p->verticalScrollBar()->maximum(); // 当前SCROLLER最大显示值
if(maxValue == 0) return false;
p->verticalScrollBar()->setSliderPosition(0);
}
BOOL CQTTableViewPageSwitch::pageEnd(QTableView *p)//末页
{
if(p == NULL) return false;
int maxValue = p->verticalScrollBar()->maximum(); // 当前SCROLLER最大显示值
if(maxValue == 0) return false;
p->verticalScrollBar()->setSliderPosition(maxValue);
}
http://blog.csdn.net/liuguangzhou123/article/details/8109089
QTableWidget和 QTableView翻页效果(准确计算Scroll,然后使用setSliderPosition函数)的更多相关文章
- Android 实现书籍翻页效果----完结篇
By 何明桂(http://blog.csdn.net/hmg25) 转载请注明出处 之前由于种种琐事,暂停了这个翻页效果的实现,终于在这周末完成了大部分功能,但是这里只是给出了一个基本的雏形,没有添 ...
- transform3D实现翻页效果
---恢复内容开始--- 闲篇 最近升级了下百度音乐,唯一的感觉就是动画效果很炫丽.我不是个对产品很敏感的人,但是这段时间观察一些大厂的产品发现现在的APP越来越重视动画效果了.大家可能没有注意过,连 ...
- 利用GPU实现翻页效果
0x00 前言 有一段时间没有更新博客了,在考虑写点什么的时候正好赶上了这个月我的书<Unity 3D脚本编程>又加印了.因此写篇小文聊聊利用shader来实现翻书的效果吧. 虽然本文是这 ...
- HTML5开发的翻页效果实例
简介2010年F-i.com和Google Chrome团队合力致力于主题为<20 Things I Learned about Browsers and the Web>(www.20t ...
- 利用GPU实现翻页效果(分享自知乎网)
https://zhuanlan.zhihu.com/p/28836892?utm_source=qq&utm_medium=social 首发于Runtime 写文章 利用GPU实现翻页效果 ...
- Android平台中的三种翻页效果机器实现原理
本文给开发者集中展现了Android平台中的三种翻页效果机器实现原理,希望能够对开发者有实际的帮助价值! 第一种翻页效果如下: 实现原理: 当前手指触摸点为a,则 a点坐标为(ax,ay), ...
- c#翻页效果
用c#和GDI+实现杂志翻页动画效果时间:2010-01-13 blog.csdn.net 周公 - 说明:以前本人参与个一个电子杂志项目,当时要求实现模拟现实生活中的杂志翻页动画效果,别人推荐了这篇 ...
- webapp应用--模拟电子书翻页效果
前言: 现在移动互联网发展火热,手机上网的用户越来越多,甚至大有超过pc访问的趋势.所以,用web程序做出仿原生效果的移动应用,也变得越来越流行了.这种程序也就是我们常说的单页应用程序,它也有一个英文 ...
- 采用cocos2d-x lua 的listview 实现pageview的翻页效果之上下翻页效果
--翻页滚动效果local function fnScrollViewScrolling( sender,eventType) -- body if eventType == 10 the ...
随机推荐
- NOIP模拟 run - 双向链表
题目大意: 企鹅国正在举办全面运动会,第一项比赛就是跑步.N 个人在圆形跑道上跑步,他们都有各自的速度和起点.但这个跑步规则很奇怪,当两个人相遇的时候编号较小的就会出局,当场上剩下最后一个人的时候跑步 ...
- 【77.39%】【codeforces 734A】Anton and Danik
time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...
- android打包SDK具体操作(包含第三方的jar一起打包)
一.背景 因为最近编写的android项目,需要编写对应的SDK给别人使用,还好以前我都是拆成module写的,所以还不太费工夫,不过因为一些module里面包含第三方的jar,所以打包有点麻烦 二. ...
- C# Span 入门
原文:C# Span 入门 版权声明:博客已迁移到 http://lindexi.gitee.io 欢迎访问.如果当前博客图片看不到,请到 http://lindexi.gitee.io 访问博客.本 ...
- 使用Visual Studio 2010 一步一步创建Powershell Module 和 Cmdlet
现在就用C#写一个超级简单的Module和Cmdlet 1. 在VS中创建一个Library的项目 文件->新建->项目->C#->Class Library 在这里给我们的C ...
- sgu209:Areas(计算几何)
意甲冠军: 给一些直.这架飞机被分成了很多这些线性块.每个块的需求面积封闭曲线图. 分析: ①我们应要求交点22的直线: ②每行上的交点的重排序,借此来离散一整行(正反两条边): ③对于连向一个点的几 ...
- JDBC数据源DBCP源代码情景分析
在之前的一篇博文从JDBC到commons-dbutils 中,我曾经写到,对于获取数据库连接,有一个解决方案,那就是数据源.业界用到的比较普遍的开源数据源解决方案有很多,DBCP是其中一种,今天,我 ...
- 国内大型的内部 C# 编程规范
C#编程规范 改动记录 Ver. No 发版日期 编制人 批准人 改动的说明 目 录 1 1.1 1.2 2 2.1 2.1.1 Pascal 大写和小写 2.1.2 Came ...
- Headless Chrome入门
原文地址:Getting Started with Headless Chrome By EricBidelman Engineer @ Google working on web tooling ...
- Nucleus PLUS系统架构和组件
(一个)方法论和软件组件 1.软件组件(Software Component)定义 从一般意义上来说.组件(Component)是系统中能够明白辨识的组成部分,一个不透明的功能实现体.软件开发中,组件 ...