控制滚动条上滑块的大小

时间:2013-03-02 18:32:02

标签: qt user-interface

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

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

问题是Qt似乎没有让我直接控制滑块的大小,我只能通过最小/最大值和大步数的组合间接控制它,这就是我的位置(令人尴尬地)卡住了。我似乎无法扩展这些因素并保留我的滚动条。还有其他人以前做过这种事吗?

1 个答案:

答案 0 :(得分:1)

抱歉,

我自己没有使用过Maya ..

如果你只想知道滑块(拇指)大小,就像你说的那样用setMaximum(),setMinimum()函数控制。

如果我的要求正确,您希望拇指大小与缩放级别相对应

  • 1000%缩放,如缩放系数= 10 - >拇指大小是滚动条的10%
  • 100%缩放,无滚动条。

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

在这种情况下始终将滚动条最小值设置为0。

  • 当缩放系数为1(k-当前)时,将滚动条的最大值设置为您显示的内容的宽度:1(原始)。保存此最大值以供将来使用,如说(Z)

^^如果您的内容完全填满可用宽度,这将不会在缩放系数1处为您提供滚动条。

  • 接下来当您的缩放系数更改为K = 2(200%比例)时。
    1. 通过计算Y来获取旧的缩放系数(scrollbar->maximum() / Z)。
    2. 将新Scrollbar Maximum设为K * Z
    3. 将新Scrollbar value设为scrollbar->value() * K / Y

^^现在这又将滚动条拇指的大小设置为您要查找的大小(缩放系数)

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

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