即使在滚动时如何也不移动 QScrollArea 中的内容
Posted
技术标签:
【中文标题】即使在滚动时如何也不移动 QScrollArea 中的内容【英文标题】:How to not move the contents in QScrollArea even on scroll 【发布时间】: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 也在以某种方式滚动。
还有其他人在滚动区域内移动滚动小部件吗?
提前致谢。
【问题讨论】:
【参考方案1】:您应该使用自己的QScrollBar
实现一个小部件,而不是QScrollArea
。只需在您的小部件上放置一个QScrollBar
并手动控制它。也许最好实现QAbstractScrollArea
抽象类,它可以帮助处理滚动(但可能会导致其他麻烦,就像 Qt 子框架经常发生的那样......)。
【讨论】:
以上是关于即使在滚动时如何也不移动 QScrollArea 中的内容的主要内容,如果未能解决你的问题,请参考以下文章