滚动条中的子项隐藏在滚动时

时间:2018-02-21 15:45:52

标签: c++ fltk

我有一个Fl_Group项目,在其中我有一个滚动条,在滚动条内有一个Fl_Group,在组中有很多子项(Fl_Box项目)。在滚动子项目时,当第一个框项目在顶部之外时隐藏 enter image description here

Box::Box(MyOverlayWindow *win, Point p1, Point p2,
        Size s1, Size s2, const char *L)
           :Fl_Group(p1.x(),p1.y(),100,100,L),
         m_x0(p1.x()),m_y0(p1.y()),m_x1(p2.x()),m_y1(p2.y()),
         start_size(s1), end_size(s2)

{
    set_start_size(start_size);
    oly = win;
    Fl_Scroll *scroll = new Fl_Scroll(x()+5,y()+5,w()-15,h()-15);
    scroll->box(FL_ROUNDED_BOX);
    scroll->color(FL_WHITE);
    group = new  Fl_Group(x()+5,y()+5,scroll->w()-15,40000);
    group->box(FL_ROUNDED_BOX);
    group->color(FL_WHITE);
    std::vector<std::string> image_names;
    put_lines_to_vector(image_names);
    for(int i=0; i < 1500 ; i++) {
    SimpleBox *b1 = new SimpleBox(Point(group->x(),(i*60)+group->y()+5),
                Size(group->w()-5, 60),"SimpleBox");
        b1->add_image(image_names[i]);
    }

enter image description here

1 个答案:

答案 0 :(得分:0)

为了解决这个问题,我在圈内添加了一行代码,每当我创建一个孩子时我需要将它添加到Fl_Group小部件

for(int i=0; i < 1500 ; i++) {
SimpleBox *b1 = new SimpleBox(Point(group->x(),(i*60)+group->y()+5),
            Size(group->w()-5, 60),"SimpleBox");
    b1->add_image(image_names[i]);
    group->add(b1); <-------------
}