我用 QScrollArea 来存放一列控件.
通过上下滚动来显示.
QT似乎没有现成的方法能在区域内任意地方拖动鼠标来滚动内容.
只能通过上下键或者拖动滚动条来滚动内容.
所以我只有重载鼠标事件了.
当鼠标按下事件发生时,判定按下的位置是否属于 QScrollArea 的区域.
是的话,则记录下坐标p.
当鼠标移动事件发生时.当前鼠标坐标p1和之前坐标p的y轴差,为QScrollArea的滚动距离.
但是问题是,滚动是没有界限的,哪怕现在已经在顶部了,依然可以往上滚动.
所以只能判定是否到顶部了来限制滚动.
但是在判定是否到顶的时候,发现没有函数能获得QScrollArea内容是否到顶还是到底了.
只能判断滚动条 QScrollBar是否到达最大值或者最小值.
但是这个滚动条却并不是和内容对齐的.
因为如果我通过QScrollBar的setSliderPosition值来限制滚动的话.
鼠标慢速滚动不会出问题.飞快的滚动,依然会造成越界.
不知道各位有没有完美的方法能够实现这种列表滚动方式?