估值器 Valuators

FLTK提供的Valuator组件均实现了ValuatorExt trait。这些组件会在内部跟踪步长step,范围range和边界bound这些数据,你会在图形界面上看到它们的具体作用。 你可能在别的地方使用过ScrollbarSliders这些组件。可以在Valuator mod中找到这些组件:

  • Slider
  • NiceSlider
  • ValueSlider
  • Dial
  • LineDial
  • Counter
  • Scrollbar
  • Roller
  • Adjuster
  • ValueInput
  • ValueOutput
  • FillSlider
  • FillDial
  • HorSlider (Horizontal slider)
  • HorFillSlider
  • HorNiceSlider
  • HorValueSlider

在图形界面通过拖动等方式改变Valuator的值会触发其回调。Valuator的当前值可以通过value()方法来获取,可以用set_value()来设置其值。根据使用情况,你也可以获取和改变rangestep的值:

use fltk::{prelude::*, *};

fn main() {
    let a = app::App::default();
    let mut win = window::Window::default().with_size(400, 300);
    let mut slider = valuator::HorNiceSlider::default().with_size(400, 20).center_of_parent();
    slider.set_minimum(0.);
    slider.set_maximum(100.);
    slider.set_step(1., 1); // 设置步长为10
    slider.set_value(50.); // 设置开始
    win.end();
    win.show();

    slider.set_callback(|s| {
        println!("slider at {}", s.value());
    });
    a.run().unwrap();
}

image

下面列举了使用不同的 Valuator 组件实现这个例子的效果:

展开查看示例

Adjuster widget

Adjuster

Counter widget

Counter

Dial widget

Dial

FillDial widget

FillDial

FillSlider widget

FillSlider

HorFillSlider widget

HorFillSlider

HorNiceSlider widget

HorNiceSlider

HorSlider widget

HorSlider

HorValueSlider widget

HorValueSlider

LineDial widget

LineDial

NiceSlider widget

NiceSlider

Roller widget

Roller

Scrollbar widget

Scrollbar

Slider widget

Slider

ValueInput widget

ValueInput

ValueOutput widget

ValueOutput

ValueSlider widget

ValueSlider


Valuator 枚举

fltk::valuator枚举为Valuator组件提供了一些可用的特性。如果你要使用这些效果,请添加下面的代码:

#![allow(unused)]
fn main() {
let mut valuator_object = valuator::Counter::default().with_size(200, 50).center_of_parent();
// 为你的组件添加下面这行代码
valuator_object.clone().with_type(fltk::valuator::CounterType::Simple);
}

下面演示了 Counter, Dial, ScrollbarSlider 组件使用这些特性的示例:

点击查看枚举示例

CounterType::Normal

CounterTypeNormal

CounterType::Simple

CounterTypeSimple


DialType::Normal

DialTypeNormal

DialType::Line

DialTypeLine

DialType::Fill

DialTypeFill


ScrollbarType::Vertical

ScrollbarTypeVertical

ScrollbarType::Horizontal

ScrollbarTypeHorizontal

ScrollbarType::VerticalFill

ScrollbarTypeVerticalFill

ScrollbarType::HorizontalFill

ScrollbarTypeHorizontalFill

ScrollbarType::VerticalNice

ScrollbarTypeVerticalNice

ScrollbarType::HorizontalNice

ScrollbarTypeHorizontalNice


SliderType::Vertical

SliderTypeVertical

SliderType::VerticalFill

SliderTypeVerticalFill

SliderType::HorizontalFill

SliderTypeHorizontalFill

SliderType::VerticalNice

SliderTypeVerticalNice

SliderType::HorizontalNice

SliderTypeHorizontalNice