首页 > 解决方案 > FLTK 设置滑块值显示区域宽度

问题描述

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

在此处输入图像描述

我浏览了文档并尝试了以下功能:

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

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

标签: c++fltk

解决方案


问题是大小被硬编码为水平 35 或垂直 25。您需要修改 Fl_Value_Slider.cxx。在常规抽奖中,它有

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

这是基于 10 的 textsize_。如果更改文本大小,则需要根据文本大小增加。就像是

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 并覆盖 draw 方法。


推荐阅读