Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 控制滚动条上滑块的大小_Qt_User Interface - Fatal编程技术网

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

Qt 控制滚动条上滑块的大小,qt,user-interface,Qt,User Interface,我正在编写一个可以用水平滚动条平移的UI,但也可以独立地平移和缩放(如非线性编辑器的剪辑窗口)。这是一个基于Qt的UI,我不需要考虑高度,简单的长度。< /P> 平移本身,我想我能处理,但缩放不好。问题是如何控制滚动条上滑块/夹点小部件的大小。放大UI时,它应该缩小,缩小时则相反。滑块的大小应反映缩放效果(即,如果我已放大以查看10%的视图,则滑块应为滚动条大小的10%左右,或尽可能靠近滚动条) 问题是Qt似乎不允许我直接控制滑块的大小,我只能通过最小/最大值和大步长计数的组合间接控制它,这就是

我正在编写一个可以用水平滚动条平移的UI,但也可以独立地平移和缩放(如非线性编辑器的剪辑窗口)。这是一个基于Qt的UI,我不需要考虑高度,简单的长度。< /P> 平移本身,我想我能处理,但缩放不好。问题是如何控制滚动条上滑块/夹点小部件的大小。放大UI时,它应该缩小,缩小时则相反。滑块的大小应反映缩放效果(即,如果我已放大以查看10%的视图,则滑块应为滚动条大小的10%左右,或尽可能靠近滚动条)

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

对不起

我自己也没用过玛雅

如果您只是想知道滑块(拇指)的大小,那么正如您所说的,它是由setMaximum()和setMinimum()函数控制的

如果我没有弄错您的要求,您希望拇指大小与缩放级别相对应

  • 缩放因子=10时的1000%缩放->拇指大小为滚动条的10%
  • 100%缩放,无滚动条
我假设您可以计算缩放因子(例如K),这将是缩放的比例,并且您可以通过Maya控制滚动条的最小/最大/当前值

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

  • 将滚动条的最大值设置为缩放因子为1(k-当前):1(原始)时显示内容的宽度。保存此最大值以备将来使用,例如(Z)
^^如果您的内容完全填满可用宽度,则在缩放因子1处不会出现滚动条

  • 接下来,当缩放因子更改为K=2(200%比例)时。
  • 通过计算
    滚动条->最大值()/Z
    ,获取旧的缩放因子(
    Y
  • 将新建设置为
    K*Z
  • 将新建设置为
    滚动条->值()*K/Y
^^这将依次将滚动条拇指的大小设置为您要查找的大小(缩放因子)

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

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

对不起

我自己也没用过玛雅

如果您只是想知道滑块(拇指)的大小,那么正如您所说的,它是由setMaximum()和setMinimum()函数控制的

如果我没有弄错您的要求,您希望拇指大小与缩放级别相对应

  • 缩放因子=10时的1000%缩放->拇指大小为滚动条的10%
  • 100%缩放,无滚动条
我假设您可以计算缩放因子(例如K),这将是缩放的比例,并且您可以通过Maya控制滚动条的最小/最大/当前值

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

  • 将滚动条的最大值设置为缩放因子为1(k-当前):1(原始)时显示内容的宽度。保存此最大值以备将来使用,例如(Z)
^^如果您的内容完全填满可用宽度,则在缩放因子1处不会出现滚动条

  • 接下来,当缩放因子更改为K=2(200%比例)时。
  • 通过计算
    滚动条->最大值()/Z
    ,获取旧的缩放因子(
    Y
  • 将新建设置为
    K*Z
  • 将新建设置为
    滚动条->值()*K/Y
^^这将依次将滚动条拇指的大小设置为您要查找的大小(缩放因子)

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


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

显示此数据的控件是什么?以及您如何准确地处理放大/缩小。你能展示这些代码吗?它是Maya中的一个面板,一个3D建模和动画包。它允许您将一些面板UI嵌入自定义UI(使用PyQt或PySide)。在我的例子中,我使用的是clipEditor(如果你知道这个软件包的话)。您可以收听面板事件以及我如何确定缩放是将面板的帧范围除以完整的帧范围(我知道),然后取相反的值。您使用什么控件来显示此数据?以及您如何准确地处理放大/缩小。你能展示这些代码吗?它是Maya中的一个面板,一个3D建模和动画包。它允许您将一些面板UI嵌入自定义UI(使用PyQt或PySide)。在我的例子中,我使用的是clipEditor(如果你知道这个软件包的话)。您可以收听面板事件,以及我如何确定zoom是将面板的帧范围除以完整帧范围(我知道),然后取相反的值。最后正确实现了它,谢谢!这就是我们要走的路。终于实现了,谢谢!这就是路。