1

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

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

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

4

1 回答 1

1

对不起,

自己没用过maya。。

如果您想知道滑块(拇指)的大小,正如您所说,使用 setMaximum()、setMinimum() 函数进行控制。

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

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

我假设您可以计算缩放因子(例如 K),这将是您的缩放比例,并且您可以通过 Maya 控制滚动条的 Min/Max/Current 值

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

  • 当缩放因子为 1(k- current):1(original) 时,将滚动条的最大值设置为您显示的内容的宽度。保存此最大值以备将来使用,例如 (Z)

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

  • 接下来,当您的缩放系数更改为 K = 2(200% 比例)时。
    1. Y通过计算获得旧的缩放因子( ) scrollbar->maximum() / Z
    2. 将新滚动条最大值设置为K * Z
    3. 将新滚动条值设置为scrollbar->value() * K / Y

^^ 现在这将反过来将滚动条拇指的大小设置为您要查找的大小(缩放因子)

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

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

于 2013-03-03T17:00:46.437 回答