我想要一个'可扩展'窗口/小部件。当点击当前窗口上的按钮时,将显示另一个小部件,该小部件附加到当前窗口,如果再次单击该按钮,它可以“折叠”回来。
它不是一个可以相对于主窗口自由移动的弹出窗口。我希望它附加到主窗口。任何人有任何想法?非常感谢。
我尝试制作一个由两个盒子组成的大窗口,其中一个被处理以显示或隐藏,但窗口大小不会改变。如果调整窗口大小,则位置看起来不正确。
答案 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
}
}