控制滚动条上滑动条的大小



我正在编写一个可以使用水平滚动条平移的UI,但也可以独立平移和缩放(如非线性编辑器的剪辑窗口)。这是一个基于Qt的UI,我不需要考虑高度,只需要考虑长度。

平移本身,我想我可以处理,但不缩放。问题是如何控制滚动条上滑块/握把小部件的大小。当放大UI时,它应该收缩,当缩小时,相反。滑块的大小应该反映缩放(例如,如果我放大到看到10%的视图,滑块应该是滚动条大小的10%左右,或者尽可能接近它)。

问题是Qt似乎不能让我直接控制滑块的大小,我只能通过最小/最大值和大步数的组合间接控制它,这就是我(尴尬地)卡住的地方。我似乎无法调整这些因素并保持滚动条。以前有人做过这种事吗?

对不起,

我自己没有使用过Maya ..

如果你想知道只是滑块(拇指)的大小,它是你所说的控制与setMaximum(), setMinimum()函数。

如果我正确理解了你的要求,你希望拇指大小对应缩放级别

  • 1000%缩放,缩放系数= 10 ->拇指大小为滚动条的10%
  • 在没有滚动条的地方100%缩放

我假设你可以计算缩放系数(比如K),这将是你的缩放比例,你可以通过Maya控制滚动条的最小/最大/当前值

在这种情况下,滚动条的最小值总是为0。

  • 当缩放系数为1(k- current):1(original)时,设置滚动条的最大宽度为所显示内容的宽度。保存这个最大值以供将来使用,例如(Z)

^^这将给你没有滚动条缩放系数1,如果你的内容填补了可用的宽度正好。

  • 下一步,当你的缩放系数改变为K = 2(200%缩放)。
    1. 通过计算scrollbar->maximum() / Z得到旧变焦系数(Y)
    2. 设置新滚动条最大值为K * Z
    3. 设置新滚动条值为scrollbar->value() * K / Y

^^现在,这将反过来设置滚动条的大小为您想要的大小(缩放系数)

请注意,这假设您的内容在缩放系数为1时不需要滚动条,并且完全适合可用的宽度。

如果不是这种情况,并且显示内容的控件的宽度是可调整大小的,则上述逻辑的结果将意味着,在缩放因子为10时,拇指将处于其缩放因子为1时大小的10%。因此,拇指的大小不会是滚动条的10%,而是其自身的10%(100%缩放)

相关内容

  • 没有找到相关文章

最新更新