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
int barWidth = ui->scrollArea->horizontalScrollBar()->width();//水平滚动条宽度
int imageWidth = label->width();//图像宽度
int max = ui->scrollArea->horizontalScrollBar()->maximum();//水平滚动条可滚动的最大值
int value = ui->scrollArea->horizontalScrollBar()->value();//获取滚动条当前位置
if(imageWidth-barWidth == value)//当前值等于最大值
qDebug()<<"max";
if(value==0)//最小值
qDebug()<<"min";
