QTableWidget和 QTableView翻页效果(准确计算Scroll,然后使用setSliderPosition函数)
2024-10-02 00:54:56
以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
最新文章
- 禁止页面后退JS(兼容各浏览器)
- 【Java每日一题】20161230
- iOS --SQL的增加、删除、查找、修改
- OpenGL编程指南(第七版)
- maven更改编译环境的java版本
- Eclipse 将Java项目转为Dynamic web project
- HADOOP再进阶:本地Yum软件源安装Cloudera Manager 5
- Linux查找多个类似,但不同的名称和重命名文件
- npm安装项目出错
- springboot~使用docker构建gradle项目
- git版本控制工具的使用
- restTemplate 发送http post请求带有文件流、参数
- ZooKeeper注册中心安装详细步骤(单节点)
- python大法好——异常
- Docker for windows WIN版本,主板特性问题
- [hadoop读书笔记] 第五章 MapReduce工作机制
- VS2012调用64位IIS Express
- Servlet 启动顺序
- 图的基础---关键路径理解和实现(Java)
- 【Todo】找出共同好友 &; Spark &; Hadoop面试题
热门文章
- CF439E:The Untended Antiquity - 哈希 + 二维树状数组
- TensorFlow 学习(九)—— 初始化函数(概率分布函数 api、常数生成函数)
- 【序列操作V】平衡树(无旋treap)
- 让C#语言充当自身脚本!——.NET中的动态编译
- Diffie-Hellman Key Exchange – A Non-Mathematician’s Explanation
- WinForm - 窗体淡入效果界面的简单实现方法
- RabbitMq核心概念和术语
- python 教程 第三章、 运算符与表达式
- 百度地图 Android SDK - 新的版本号(v3.2.0)正式上线
- SAP HR工资配置项1---工资计算周期配置