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