如何通过按 Fl_Button 更改 Fl_Window 的背景颜色

Posted

技术标签:

【中文标题】如何通过按 Fl_Button 更改 Fl_Window 的背景颜色【英文标题】:how to change the background color of Fl_Window by pressing Fl_Button 【发布时间】:2017-03-27 21:39:59 【问题描述】:

谁能告诉我,如何通过按 Fl_Button 来更改 Fl_Window 的背景颜色。我正在尝试这样做,但它不起作用。

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();
...

谢谢!!!

【问题讨论】:

要么重绘小部件,要么将损坏设置为 1。 【参考方案1】:

正如 cup 所指出的,重绘可以解决问题:

#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();

【讨论】:

以上是关于如何通过按 Fl_Button 更改 Fl_Window 的背景颜色的主要内容,如果未能解决你的问题,请参考以下文章

如何更改按变量因子分类的ggplot的图例标题

如何通过单击更改数组值?

如何更改按钮的颜色?

如何通过 IBAction 更改 UITableViewCell 内容视图?

如何通过joomla中的组件更改模板位置的内容

如何在创建后通过更改活动来处理推送通知意图?