how to change the background color of Fl_Window by pressing Fl_Button

送分小仙女□ 提交于 2019-12-25 00:37:57

问题


Can anyone tell me, how to change the background color of Fl_Window by pressing Fl_Button. I'm trying to do it this way but it's not working.

void new_color(Fl_Widget* w, void*){
Fl_Button* b = (Fl_Button*)w;
b->parent()->color(FL_RED);
}


int main()
}
Fl_Window* win = new Fl_Window(...);
win->color(FL_WHITE);
win->begin();

Fl_Button* but = new Fl_Button(...);
but->callback(new_color);

win->end();
...
}

thanks!!!


回答1:


As pointed by cup, redraw does the trick:

#include <FL/Fl.H> 
#include <FL/Fl_Button.H>
#include <FL/Fl_Window.H>

int main()
{
    Fl_Window win(200, 200, "Color changer");
    win.color(FL_WHITE);

    Fl_Button but(50, 80, 100, 20, "Click Me!");
    but.callback([](Fl_Widget* w, void*) {
        Fl_Widget* p = w->parent();
        p->color(p->color() == FL_WHITE ? FL_RED : FL_WHITE);
        p->redraw();
    });

    win.show();
    return Fl::run();
}


来源:https://stackoverflow.com/questions/43056935/how-to-change-the-background-color-of-fl-window-by-pressing-fl-button

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!