gpt4 book ai didi

c++ - 在 qscrollbar 旁边添加小部件

转载 作者:行者123 更新时间:2023-11-28 06:27:10 25 4
gpt4 key购买 nike

如何在 QScrollbar 旁边放置一个小部件,如下所示: enter image description here

我使用 QScrollArea 并覆盖 Horizo​​ntal-QScrollBar。首先我想,我可以使用 paintEvent 在栏旁边绘制文本,如“100 %”。但我只能覆盖已有的画。

现在我认为,唯一的机会是从源代码中实现 QScorllBarPrivate 漏洞……有人知道吗?

最佳答案

主要想法是创建一个覆盖层来遮盖默认的水平滚动条并显示您自己的底线。

  1. 创建一个代表底线的小部件,即带有显示一些信息的标签的小部件和一个水平的 QScrollBar,所有这些都放在一个 hbox 布局中。
  2. 通过使 QScrollArea 成为此小部件的直接父小部件,将此小部件放在滚动区域中而不将其添加到布局中。
  3. 在底线小部件上使用 move()resize() 以在初始化时正确定位它。同时调整大小并重新定位滚动区域调整大小(您可以使用事件过滤器或继承来调整事件大小)。
  4. 确保滚动区域的 horizo​​ntalScrollBarPolicyQt::ScrollBarAlwaysOn 以便滚动区域的内部布局始终保持足够的空间以容纳底线小部件。
  5. 还要确保底线小部件的高度与默认滚动条的高度相同。只要您删除 hbox 布局中的间距和边距并且标签(或其他小部件)不需要比滚动条更多的垂直空间,这应该很容易。
  6. 使用horizo​​ntalScrollBar() 获取滚动区域的内部QScrollBar 并将其与您自己的栏同步。 QScrollBar 具有 rangeChanged()valueChanged() 信号,因此您可以连接到它们并正确更新您的栏。当用户更改滚动条的值并触发其 valueChanged() 信号时,您应该为内部滚动条设置相同的值。您可以通过使用指示这是您自己的更改的标志来防止无限递归。

关于c++ - 在 qscrollbar 旁边添加小部件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28332799/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com