C++ 我怎样才能从FLTK中的FLU按钮上取下标签?

C++ 我怎样才能从FLTK中的FLU按钮上取下标签?,c++,fltk,C++,Fltk,我有一个自定义类,CustomButton,它扩展了Fl\u Button。在我的屏幕上有一堆Fl\u输入和CustomButton小部件,我希望能够使用tab键在它们之间导航。在输入字段之间进行tab可以很好地工作,但一旦CustomButton获得焦点,我似乎无法将tab从中移开 这是我的句柄函数 int CustomButton::handle ( int event ) { int is_event_handled = 0; switch (event) { case

我有一个自定义类,
CustomButton
,它扩展了
Fl\u Button
。在我的屏幕上有一堆
Fl\u输入
CustomButton
小部件,我希望能够使用tab键在它们之间导航。在输入字段之间进行tab可以很好地工作,但一旦
CustomButton
获得焦点,我似乎无法将tab从中移开

这是我的句柄函数

int CustomButton::handle ( int event )
{
  int is_event_handled = 0;
  switch (event)
  {
    case FL_KEYBOARD:
      // If the keypress was enter, toggle the button on/off
      if (Fl::event_key() == FL_Enter || Fl::event_key() == FL_KP_Enter)
      {
        // Do stuff...
      }
      is_event_handled = 1;
      break;

    case FL_FOCUS:
    case FL_UNFOCUS:
      // The default Fl_Button handling does not allow Focus/Unfocus
      // for the button so mark the even as handled to skip the Fl_Button processing
      is_event_handled = 1;
      break;

    default:
      is_event_handled = 0;
      break;
  }

  if ( is_event_handled == 1 ) return 1;
  return Fl_Round_Button::handle ( event );
}

我使用的是fltk 1.1.10。

对于演示如何控制焦点的非常简单的示例,请查看测试文件


也许您的小部件确实获得了焦点(请使用Fl::focus()检查),但它没有显示出来(您需要处理Fl\u focus和/或Fl\u UNFOCUS事件)

有关演示如何控制焦点的非常简单的示例,请检查测试文件


也许你的小部件确实获得了焦点(用Fl::focus()检查一下),但它没有显示出来(你需要处理Fl\u focus和/或Fl\u UNFOCUS事件)?

我的问题是我的
CustomButton::handle()
Fl\u键盘
事件后返回
1
,而没有实际使用tab键

is\u event\u handled=1
移动到if语句中,可以让我仅使用
FL\u Enter
keypress,并让其他小部件(即控制导航的FL\u组)使用任何其他按键

或者去掉
if
并替换为

switch(Fl::event_key())
{
    case FL_Enter:
    case FL_KP_Enter:
        // Do stuff
        is_event_handled = 1;
        break;
    default:
        is_event_handled = 0;
        break;
}

我的问题是我的
CustomButton::handle()

is\u event\u handled=1
移动到if语句中,可以让我仅使用
FL\u Enter
keypress,并让其他小部件(即控制导航的FL\u组)使用任何其他按键

或者去掉
if
并替换为

switch(Fl::event_key())
{
    case FL_Enter:
    case FL_KP_Enter:
        // Do stuff
        is_event_handled = 1;
        break;
    default:
        is_event_handled = 0;
        break;
}

我注释掉了我的
CustomButton::handle()
函数,只需将事件传递给
Fl\u Button::handle()
,我仍然无法从
CustomButton
选项卡中移除。我可以看到,
CustomButton
在我点击它时确实有焦点,但它不会松开。我应该注意,我使用的是fltk 1.1.10,它看起来像是
Fl\u Group::handle()
从未为按钮进入
Fl\u键盘
框,但它为
Fl\u输入
进入。该案例调用了
navigation(navkey())
,我猜需要调用它才能将焦点从
CustomButton
上移开,我注释掉了我的
CustomButton::handle()
函数,只需将事件传递给
Fl\u Button::handle()
而我仍然无法从
自定义按钮中切换到选项卡。我可以看到,
CustomButton
在我点击它时确实有焦点,但它不会松开。我应该注意,我使用的是fltk 1.1.10,它看起来像是
Fl\u Group::handle()
从未为按钮进入
Fl\u键盘
框,但它为
Fl\u输入
进入。这种情况下需要调用
导航(navkey())
,我猜需要调用它才能将焦点从
自定义按钮上移开