如何根据 Fl_Input 的值设置 Fl_Slider
how to set up Fl_Slider by value from Fl_Input
我尝试使用下面的代码从 Fl_Input 读取值并设置 Fl_Slider,但有些东西不起作用!
我不确定操作
感谢帮助!
FL_Value_Input* vinput;
void set_slider(FL_Widget* w, void* v)
{
Fl_Slider* slider = (Fl_Slider*)w;
slider->value(vinput->value());
}
int main(){
Fl_Window *window = new Fl_Window(100, 100, 600, 400, "callback");
window->begin();
Fl_Value_Input *vinput = new Fl_Value_Input(40, 40, 40, 40);
vinput->textsize(30);
Fl_Button *button = new Fl_Button(160, 40, 120, 40, "Set slider");
button->labelsize(15);
Fl_Slider *slid = new Fl_Slider(40, 200, 400, 30);
slid->slider(FL_UP_FRAME);
((Fl_Widget*)slid)->type(FL_HOR_NICE_SLIDER);
slid->bounds(10, -10);
slid->slider_size(10);
slid->range(-10, 10);
slid->step(1);
slid->value(0);
button->callback(set_slider);
window->end();
window->show();
return Fl::run();
}
您正在按钮回调中设置滑块 - 小部件是按钮:而不是滑块。此外,您所指的 vinput 是全局的,而不是 main 中的本地输入。
要解决此问题,请将包含输入和滑块的结构传递给回调。
// Create a structure for input and slider
struct Info
{
FL_Value_Input* vinput;
FL_Slider* slider;
}
// Callback
void set_slider(FL_Widget* w, void* v)
{
Info* info = (Info*) v;
info->slider->value(info->vinput->value());
}
....
// Declare Info in your main code
Info info;
...
info->vinput = new Fl_value_input...
...
info->slider = new Fl_slider...
...
button->callback(set_slider, (void*)&info);
我尝试使用下面的代码从 Fl_Input 读取值并设置 Fl_Slider,但有些东西不起作用! 我不确定操作
感谢帮助!
FL_Value_Input* vinput;
void set_slider(FL_Widget* w, void* v)
{
Fl_Slider* slider = (Fl_Slider*)w;
slider->value(vinput->value());
}
int main(){
Fl_Window *window = new Fl_Window(100, 100, 600, 400, "callback");
window->begin();
Fl_Value_Input *vinput = new Fl_Value_Input(40, 40, 40, 40);
vinput->textsize(30);
Fl_Button *button = new Fl_Button(160, 40, 120, 40, "Set slider");
button->labelsize(15);
Fl_Slider *slid = new Fl_Slider(40, 200, 400, 30);
slid->slider(FL_UP_FRAME);
((Fl_Widget*)slid)->type(FL_HOR_NICE_SLIDER);
slid->bounds(10, -10);
slid->slider_size(10);
slid->range(-10, 10);
slid->step(1);
slid->value(0);
button->callback(set_slider);
window->end();
window->show();
return Fl::run();
}
您正在按钮回调中设置滑块 - 小部件是按钮:而不是滑块。此外,您所指的 vinput 是全局的,而不是 main 中的本地输入。
要解决此问题,请将包含输入和滑块的结构传递给回调。
// Create a structure for input and slider
struct Info
{
FL_Value_Input* vinput;
FL_Slider* slider;
}
// Callback
void set_slider(FL_Widget* w, void* v)
{
Info* info = (Info*) v;
info->slider->value(info->vinput->value());
}
....
// Declare Info in your main code
Info info;
...
info->vinput = new Fl_value_input...
...
info->slider = new Fl_slider...
...
button->callback(set_slider, (void*)&info);