2017-04-09 16 views
0

我尝试从Fl_Input中读取值并通过使用下面的代码设置Fl_Slider,但是某些操作不起作用! 我不知道操作如何通过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(); 

}

回答

0

你设置你的滑块按钮回调 - 所述控件按钮:不滑块。你所指的输入是全局的,而不是本地的。

要解决此问题,请将具有输入和滑块的结构传递给回调函数。

// 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); 
相关问题