ocicon中的uicontrol滑块:最小值位于顶部,最大值位于底部

时间:2018-02-02 01:40:30

标签: matlab user-interface slider octave uicontrol

在我使用Octave的Matlab脚本中,我的图中有一个uicontrol元素Style Slider,这实际上是一个常规滚动条滑块。

controls.slider.audio_1 = uicontrol( 'Style', 'Slider', ...
                                     'Position', [ 100 150 10 300 ], ...
                                     'Max', 100, 'Min', 1, ...
                                     'SliderStep', [ 0.01 0.01 ], ...
                                     'Units', 'normalized', ...
                                     'Value', 1 )

滑块的方向由其几何形状决定:它的宽度为10px,高度为300px,使其成为垂直滑块。我还没有找到一种强制定位的方法。

但问题的主要内容是:当我像这样定义滑块时,最小值(由Min定义)位于顶部!滑块使用它在顶部的最小位置,然后用户必须向下拉它以增加值。我想切换它,使得最小值位于底部,当向上拖动时滑块会增加其值。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

UTSL!在libgui/graphics/SliderControl.cc#l65,您会找到

bool vertical_slider = ( bb(2) < bb(3) );
slider->setOrientation (vertical_slider ? Qt::Vertical : Qt::Horizontal);
if (vertical_slider)
  slider->setInvertedAppearance (true);  // Matlab compatibility

这正是您所寻找的。然后启动hg blame以查看添加该行的人,并查看提交消息:

$ hg log -r 23412
changeset:   23412:7b95435e96a4
user:        Rik <rik@octave.org>
date:        Tue Apr 18 16:35:38 2017 -0700
summary:     Reverse orientation of vertical uicontrol "sliders" for Matlab compatibility (bug #50818).

啊哈!因此,2017年更改了开发树(即默认版)的兼容性。因此,4.2.x版本尚未看到这一点,但下一个4.4版本将进行更改。

但是你还没有提到你使用过的GNU Octave版本。