QScrollArea有两个滚动条,以水平滚动条举例(假设其已经显示了)
先看看水平滚动条是如何定义自己的滚动范围的:
int imageWidth; //图像宽度
int barWidth = scrollArea->horizontalScrollBar()->width();//滚动条宽度
那么滚动范围就是 0 ~ imageWidth - barWidth
0是最小值,图像宽度减去水平滚动条宽度就是最大值
int max = imageWidth - barWidth;
水平滚动条有个事件,ValueChanged(int),当前位置变化时发生,可以这样连接:
connect(scrollArea->horizontalScrollBar(),SIGNAL(valueChanged(int)),this,SLOT(valueChanged(int)));
要判断是否到最大值很简单:
if(value == max)//value是滚动条当前位置,由valueChanged(int)信号传来,也可以不用信号,随时获取:
int value = scrollArea->horizontalScrollBar()->value();
判断滚动条是否在最小范围就简单了:
if(value ==0)
垂直滚动条与此类似
1 2 3 4 5 6 7 8 |
|