c++ - FLTK 设置滑块值显示区域宽度
问题描述
我想知道如何更改负责显示 Fl_Hor_Value_Slider 的当前值的区域的宽度。问题是,我希望能够选择一个年份(即 4 位数字),而滑块侧面的空间不足以正确显示年份编号。
我浏览了文档并尝试了以下功能:
slider_size()
maximum()
minimum()
range()
但他们似乎没有做我想做的事。我觉得好像我错过了一些明显的东西。有任何想法吗?
解决方案
问题是大小被硬编码为水平 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 方法。
推荐阅读
- ios - React-Native 新的 ios 项目未构建。RCT-Folly 语义问题
- asp.net - Blazor 按键事件和 KeyCodes
- entity-relationship - 带有 OR 条件的 ERD
- java - 如何将标头添加到 Web 服务的失败响应中?
- python - 添加两个整数列表
- azure-cosmosdb - Azure 函数尝试将“WHERE ... IN”与 Cosmos DB 绑定一起使用
- amazon-web-services - 如何使用 Lambda 将文件从“文件夹”A 复制到同一存储桶上的文件夹 B
- django - 多对多字段的Django过滤器不起作用
- ios - 缩放时设备上的 iOS PDFKit 内存峰值
- r - ggplot R中带有图例和排序x轴的问题