正如 aQPushButton提供默认clicked()信号一样,我希望QScrollArea有一个sliderChanged()或类似的信号。有趣的是,QScrollBar确实有这样的信号。
我想要做的就是知道滚动区域内巨大小部件的哪一部分是可见的,无论何时用户滚动它。
有很多解决方案,但对我来说没有一个是优雅的:
QScrollAreaQScrollBar有没有没有子类化的方法?
有QAbstractSlider::valueChanged()当滑块值已改变时发射,与新的滑块值作为参数信号。这将在您滚动视图时立即通知您。
WRT第二个问题,上面提到的两点都没有必要。你需要:
1)获取与滚动区域相关的内部小部件(如果有)的位置:
QPoint p = scrollArea->widget()->pos();
Run Code Online (Sandbox Code Playgroud)
如果您向下/向右滚动视图或在不滚动的情况下为空,则它曾经是负坐标。
2)获取可见区域的大小
QSize s = scrollArea->viewport()->size();
Run Code Online (Sandbox Code Playgroud)
使用这两个值,您可以构造一个 QRect 来表示内部小部件的可见区域。
| 归档时间: |
|
| 查看次数: |
2198 次 |
| 最近记录: |