正如QPushButton
提供默认clicked()
信号一样,我希望QScrollArea
有一个sliderChanged()
或类似的信号。有趣的是,QScrollBar
确实有这样的信号。
我想做的就是知道每当用户滚动它时,滚动区域内的巨大小部件的哪个部分是可见的。
有很多解决方案,对我来说似乎都不优雅:
QScrollArea
QScrollBar
有没有子类化的方法?
答案 0 :(得分:4)
当滑块值发生更改时,会发出QAbstractSlider::valueChanged()
个信号,并将新的滑块值作为参数。滚动视图后,系统会立即通知您。
WRT第二个问题,所提到的要点都没有。你需要:
1)获取与滚动区域相关的内部窗口小部件(如果有)的位置:
QPoint p = scrollArea->widget()->pos();
如果向下/向右滚动视图或在不滚动的情况下为null,则使用负坐标。
2)获取可见区域的大小
QSize s = scrollArea->viewport()->size();
使用这两个值,您可以构建一个代表内部窗口小部件可见区域的QRect。