c++ FLTK设置滑块值显示区域的宽度

piah890a  于 2023-02-01  发布在  其他
关注(0)|答案(2)|浏览(128)

我想知道如何改变Fl_Hor_Value_Slider的当前值区域的宽度。问题是,我希望能够选择年份(4位数),而滑块一侧的空间不足以正确显示年份数字。

我已经看过的文件,并尝试了以下功能:

slider_size()
maximum()
minimum()
range()

但他们似乎并没有做我想做的。我觉得我好像错过了一些明显的东西。有什么想法吗?

mcdcgff0

mcdcgff01#

问题是尺寸硬编码为35(水平)或25(垂直)。您需要修改Fl_Value_Slider. cxx。在例程绘制中,它具有

if (horizontal()) {
  bww = 35; sxx += 35; sww -= 35;
} else {
  syy += 25; bhh = 25; shh -= 25;
}

这是基于textsize_为10。如果你改变文本大小,那么它需要根据文本大小增加。

if (horizontal()) {
   int width = textsize() * 3 + 5;
   bww = width; sxx += width; sww -= width;
} else {
   int height = textsize() * 2 + 5;
   syy += height; bhh = height; shh -= height;
}

然后重建fltk库。保留这个补丁或将其发送到FLTK,并在从FLTK获得更新时进行检查。

Fl_Hor_Value_Slider* o = new Fl_Hor_Value_Slider(10, 50, 250, 50, "");
  o->tooltip("Value Slider");
  o->selection_color((Fl_Color)1);
  o->textsize(25);
  o->value(2000)
  o->range(2000, 2099);
  o->precision(0);
    • 编辑**

或者,基于Fl_Hor_Value_Slider创建自己的Hor_Value_Slider并覆盖绘制方法。

bvjveswy

bvjveswy2#

为了记录在案:同时,FLTK 1.4.0(尚未发布)为滑块提供了新方法:value_width(int)value_height(int)。这些方法允许您在水平滑块上设置值字段的宽度,在垂直滑块上设置值字段的高度。
文档可在此处找到:https://www.fltk.org/doc-1.4/classFl__Value__Slider.html

相关问题