【问题标题】:How to not move the contents in QScrollArea even on scroll即使在滚动时如何也不移动 QScrollArea 中的内容
【发布时间】:2016-06-24 12:51:38
【问题描述】:

我有一个滚动区域,其中有一个小部件,比如 scrollWidget。根据scrollValue,我有不同的图像要加载到scrollWidget 上。基本上,在滚动时,滚动条应该滚动,但 scrollArea 内的小部件不应该移动。根据新的滚动值,我将更新scrollWidget中的图像。

查看源码发现

void QScrollArea::scrollContentsBy(int, int)

负责移动小部件。

所以,试图覆盖该函数,在被覆盖的函数中,我只是返回,什么都不做。

//overriden function
    void scrollContentsBy(int dx, int dy)
    {
       return;
    }

并且在 scrollValueChanged 上调用了被覆盖的函数。即使这样,scrollWidget 也在以某种方式滚动。

还有其他人在滚动区域内移动滚动小部件吗?

提前致谢。

【问题讨论】:

    标签: qt qscrollarea


    【解决方案1】:

    您应该使用自己的QScrollBar 实现一个小部件,而不是QScrollArea。只需在您的小部件上放置一个QScrollBar 并手动控制它。也许最好实现QAbstractScrollArea 抽象类,它可以帮助处理滚动(但可能会导致其他麻烦,就像 Qt 子框架经常发生的那样......)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-12-24
      • 1970-01-01
      • 1970-01-01
      • 2011-10-11
      • 1970-01-01
      • 2011-11-02
      相关资源
      最近更新 更多