qt - 每当用户滚动 QScrollArea 时获得通知的最简单方法是什么?

标签 qt scrollbar

就像 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/

    相关文章:

    c++ - 将巨大的文本缓冲区加载到QPlainTextEdit中

    c++ - 如何删除对象之间的变量共享?

    javascript - 如果文本溢出,如何在列中添加水平滚动条,否则它将被隐藏

    c++ - 如何使用 MinGW 编译器和 SSL 支持静态编译 Qt

    c++ - 使用 qt 模板时未解析的外部?

    qt - 在运行时检查 Qt 插件的依赖性

    jquery - 如何将垂直滚动条添加到滑动选项卡?

    javascript - Css 滚动条自动滚动添加内容

    c# - 环绕面板上的 WPF 滚动条变灰

    css - 使用 CSS 将 div 设置为滚动到底部