fltk几个按钮的回调函数

问题描述

我是fltk的新手,并且回调函数有问题。 我有一个创建主窗口的类(Win),该类包含一个在窗口内创建组的class(Group)的元素。 因此,当我单击Gr组中包含的应用程序中的按钮时,应该每次都调用相同的回调函数。但是,这仅适用于第一个实例,不适用于随后的实例。是什么原因造成的,我该如何解决

class Win {
    public:
        Win();
        Fl_Window* make_window();

    private:
        Fl_Window* window;
        GrouP* group1;
        GrouP* group2;
    };

    class Group : public Fl_Group {
    public:
        Group(Win*,char* l,int value);
    private:
        Fl_GrouP* initialize(Win*);
        static void changeLabel(Fl_Widget*,void*); //callback function
        void changelabel();
   char* name;
        Fl_GrouP* mainGroup;
        Fl_Button* open;

        Fl_GrouP* group;

    };

和.cpp

 Fl_Window* Win::make_window()
    {
        window = new Fl_Window(0,1200,780);
        window->begin();
        {
                group1 = new Group(this,"group1",count++);
                yPos += 200;
                g = new Group(this,"mod2",countm++); 
            }
        }
        window->end();
        
        window->show();
        return window;
    }
Group::Group(Win* window,int value)
        : Fl_Group(window->getX(),window->getY(),window->getW(),200),mainGroup(),name(l)

    { 
        initialize(window);
    }

    Fl_GrouP* Group::initialize(Win* window) {
        mainGroup = new Fl_Group(window->x(),window->y(),window->w(),200); {
        open = new Fl_Button(m_name->x() + 80,mainGroup->y(),30,name->h(),"open");
        open->callback(Group::changeLabel,this);
        group= new Fl_Group(open->x(),open->y() + 35,mainGroup->h() -100);
        
        group->hide();
        }
        mainGroup->end();
        return mainGroup;
    }

void Group::changeLabel(Fl_Widget* w,void* group)
    {
        reinterpret_cast<GrouP*>(group)->changelabel();
    }
  void Group::changelabel()
    {
    if(open->label() == "open") open->label("close"); group->Show();
    else if(open->label() == "close") open->label("open");
    }

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)