[英]Create a closable tab in FLTK
所以我是 C++ 中使用 FLTK 的新手,我正在学习小部件。 有一个名为 Fl_Tabs 的 class 创建一个新选项卡,使用插入其中的小部件的 label。
但是,此选项卡 label 无法与之交互。
我希望用户能够单击选项卡上的按钮将其关闭,并且我希望他们能够与菜单栏交互以添加新选项卡...
这是我当前的代码:
#include <FL/Fl.H>
#include <FL/Fl_Window.H>
#include <FL/Fl_Button.H>
#include <FL/Enumerations.H>
int main(int argc, char **argv) {
Fl_Window window(Fl::w()/2,Fl::h()/2, "test");
Fl_Box windowBox(0,32,window.w(),window.h()-32);
window.resizable(&windowBox);
Fl_Tabs mainTabs(0,32,window.w(),window.h()-32);
Fl_Group tab1(0,64,window.w(),window.h()-32, "Tab 1");
tab1.end();
Fl_Group tab2(0,64,window.w(),window.h()-32, "Tab 1");
tab2.end();
Fl_Group tab3(0,64,window.w(),window.h()-32, "Tab 1");
tab3.end();
mainTabs.end();
window.end();
window.show(argc, argv);
return Fl::run();
}
如何向选项卡 label 添加关闭按钮?
Fl_Tabs 不提供该功能。 您可以通过在组本身中添加一个关闭按钮来解决它。 向 Fl_Tabs 添加和删除单个选项卡可以使用“添加”和“删除”,就像任何其他 Fl_Group 一样。
这个功能即将在1月23日的某个时候添加,所以如果你在GitHub上观看大师,你应该很快就可以使用这个功能。
tab1、2 和 3 的高度可能应该是 window.h()-64,而不是 32。
正如 Matthias Melcher 提到的,这是最近添加到 FLTK 中的(作者:Matthias Melcher:))。 修改你的例子:
#include <FL/Fl.H>
#include <FL/Enumerations.H>
#include <FL/Fl_Box.H>
#include <FL/Fl_Tabs.H>
#include <FL/Fl_Group.H>
#include <FL/Fl_Window.H>
void tab_closed_cb(Fl_Widget *w, void *data) {
auto parent = w->parent();
parent->remove(w);
}
int main(int argc, char **argv) {
Fl_Window window(Fl::w()/2,Fl::h()/2, "test");
Fl_Box windowBox(0,32,window.w(),window.h()-32);
window.resizable(&windowBox);
Fl_Tabs mainTabs(0,32,window.w(),window.h()-32);
// first tab
Fl_Group tab1(0,64,window.w(),window.h()-32, "Tab 1");
tab1.when(FL_WHEN_CLOSED);
tab1.callback(tab_closed_cb);
tab1.end();
// second tab
Fl_Group tab2(0,64,window.w(),window.h()-32, "Tab 2");
tab2.when(FL_WHEN_CLOSED);
tab2.callback(tab_closed_cb);
tab2.end();
// third tab
Fl_Group tab3(0,64,window.w(),window.h()-32, "Tab 3");
tab3.when(FL_WHEN_CLOSED);
tab3.callback(tab_closed_cb);
tab3.end();
mainTabs.end();
window.end();
window.show(argc, argv);
return Fl::run();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.