如何在FLTK中制作可扩展的窗口或对话框?

时间:2014-03-06 04:42:37

标签: fltk

我想要一个'可扩展'窗口/小部件。当点击当前窗口上的按钮时,将显示另一个小部件,该小部件附加到当前窗口,如果再次单击该按钮,它可以“折叠”回来。

它不是一个可以相对于主窗口自由移动的弹出窗口。我希望它附加到主窗口。任何人有任何想法?非常感谢。

我尝试制作一个由两个盒子组成的大窗口,其中一个被处理以显示或隐藏,但窗口大小不会改变。如果调整窗口大小,则位置看起来不正确。

2 个答案:

答案 0 :(得分:1)

您是否看过http://seriss.com/people/erco/fltk/以及fltk发行版附带的测试程序?

基本上你需要为窗口/对话框设置一个可调整大小的小部件。当你按下按钮时,将它显示为你正在显示/隐藏的组。

如果您有FLTK发行版,请查看程序test / resize.cxx作为如何根据按钮点击进行调整大小的示例。

答案 1 :(得分:0)

我不确定我明白你的确切问题是什么...... 也许您需要一个并不总是显示在主Fl_Window上的小部件。 然后按下另一个按钮使其可见并附在某处 窗户,根据窗户的大小...... 当你调整窗口大小时,它会改变它的位置,所以它总是位于, 让我们说,在它的右下角。如果我理解你的问题, 然后创建一个类,myWindow或其他什么,Fl_Window的子类。 并覆盖resize函数,该函数在调整窗口大小时调用。

class myWindow:public Fl_Window{
     Fl_Button *mySpecialWidget; //the movable widget (not allways a button ofc)
     public:
     myWindow(int x, int y, int w, int h, const char *L=NULL):
                                              Fl_Window(x,y,w,h,L){ 
        mySpecialWidget = new Fl_Button(.....);  //initialize subwidget here
        add(mySpecialWidget);                //add it as a subwidget of myWindow
        //may also include all the other needed widgets here...
     }
     void resize(int x, int y, int w, int h){
         //override this Fl_Window function, with
         //any extra functionality that you need
         //example, check window size-> set relevant position for mySpecialWidget
     }
}