如何将小部件放在QScrollbar旁边,如下所示:
我使用QScrollArea并覆盖Horizontal-QScrollBar。首先我想,我可以使用paintEvent来绘制文本,就像栏旁边的“100%”一样。但我只能覆盖现有的画作。
现在我想,唯一的机会就是从源代码中实现漏洞QScorllBarPrivate ......任何人都有任何想法?
答案 0 :(得分:1)
主要思想是创建一个覆盖隐藏默认水平滚动条并替换自己的底线。
move()
和resize()
在初始化时正确定位。还可以在滚动区域大小调整大小并重新定位它(您可以使用事件过滤器或继承来调整事件大小)。horizontalScrollBarPolicy
为Qt::ScrollBarAlwaysOn
,以便滚动区域的内部布局始终保留足够的空间,以便底线小部件适合。horizontalScrollBar()
获取滚动区域的内部QScrollBar
并将其与您自己的栏同步。 QScrollBar
有rangeChanged()
和valueChanged()
信号,因此您可以连接到它们并正确更新您的栏。当用户更改滚动条的值并触发其valueChanged()
信号时,您应该为内部滚动条设置相同的值。通过使用指示这是您自己的更改的标志,您可以防止无限递归。