就像 QPushButton
提供默认 clicked()
信号,我预计 QScrollArea
有一个sliderChanged()
或类似的信号。有趣的是,QScrollBar
确实有这样的信号。
我想做的就是知道每当用户滚动它时,滚动区域内的巨大小部件的哪一部分是可见的。
有很多解决方案,但对我来说没有一个是优雅的:
QScrollArea
QScrollBar
创建自定义视口(viewport)有没有没有子类化的方法?
最佳答案
有QAbstractSlider::valueChanged()
slider 值更改时发出的信号,以新 slider 值作为参数。这将在您 ScrollView 时立即通知您。
WRT第二个问题,提到的两点都没有必要。你需要:
1)获取与滚动区域相关的内部小部件(如果有)的位置:
QPoint p = scrollArea->widget()->pos();
如果您在不滚动的情况下向下/向右 ScrollView 或为空,则它曾经是负坐标。
2) 获取可见区域的大小
QSize s = scrollArea->viewport()->size();
使用这两个值,您可以构造一个 QRect 来表示内部小部件的可见区域。
关于qt - 每当用户滚动 QScrollArea 时获得通知的最简单方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31535793/