我的Fl_Window不会自动添加我自定义的Fl_Widget ...,但有时会添加。运作方式如下:
Fl_Window将自动添加此Fl_Widget:
//Menu version 1
class Menu : public Fl_Menu_Bar
{
public:
Menu(int x, int y, int w, int h, const char* l=0)
: Fl_Menu_Bar(x, y, w, h, l) {}
//...
};
//...
Fl_Window将不会自动添加此Fl_Widget:
//Menu version 2
class Menu : public Fl_Menu_Bar
{
public:
Menu()
: Fl_Menu_Bar(0,0,800,30) {}
//...
};
//...
这是我的运行方式:
版本1
//main
Fl_Window win(800,600);
//This will be added automatically
Menu m1(0,0,800,30);
win.show();
win.end();
return Fl::run();
//...
版本2
//main
Fl_Window win(800,600);
//This will not be added automatically.
Menu m2();
win.show();
win.end();
return Fl::run();
//...
要编译(我正在使用ubuntu),请使用
g++ main.cpp Menu.cpp -lfltk -lfltk_images
为什么我的菜单的版本1自动添加到 win 而不是版本2?特别是,无论其构造函数如何显示,如何将我的类对象添加到Fl_Window中?
documentation对此有所提及,但似乎只有使用FLUID时才有所区别(我不是)。
答案 0 :(得分:0)
您的第二个菜单隐藏在第一个菜单中。
m1 -> x = 0, y = 0, w = 800, h = 30
m2 (by default) -> x = 0, y = 0, w = 800, h = 30
两者的值相同。
答案 1 :(得分:0)
我隐约记得这是一些特殊的C ++行为:如果使用默认构造函数,请不要在变量声明中指定括号(因为它具有某些特殊含义),换句话说,而不是:
Menu m2();
只需写:
Menu m2;