Gtk小部件最小和最大宽度/高度,可调整为true

时间:2017-07-07 17:22:28

标签: gtk gtkmm3

我是gtk并且使用gtkmm-3.0的新手,我正在努力的是设置gtk小部件的最小宽度和高度。我使用了set_size_request方法,但是当我调整父容器的大小时,小部件仍然超过其最小/最大大小。

我的代码看起来像

foo::foo()
{
    set_default_size(400,400); // set default size for window
    add(grid_layout);

    menu_bar.append(file);
    menu_bar.append(edit);
    menu_bar.append(project);
    menu_bar.append(settings);
    menu_bar.append(help);


    right_panel_notebook.insert_page(right_btn, "Page1", Gtk::POS_RIGHT);
    right_panel_notebook.insert_page(notebook_btn, "Page2", Gtk::POS_RIGHT);
    right_panel_notebook.set_size_request(400,300); // setting size for a Notebook widget       


    design_paned.set_vexpand(true);
    design_paned.add1(btn);
    design_paned.add2(right_panel_notebook);


    grid_layout.set_row_homogeneous(false);
    grid_layout.set_column_homogeneous(true);
    grid_layout.attach_next_to(menu_bar, Gtk::POS_RIGHT, 1,1);        
    grid_layout.attach_next_to(design_paned, Gtk::POS_BOTTOM, 1,1);        

    show_all();
}   

那么,有没有办法限制小部件的最小/最大尺寸,其大小可以调整为真。

1 个答案:

答案 0 :(得分:1)

不确定这是否是您想要的但是查看您的代码,在GtkNotebook中调用set_size_request,这是在GtkPaned中,所以:

GtkPaned个孩子有两个属性, resize shrink

  

每个孩子都有两个可以设置,调整大小和缩小的选项。如果   resize是真的,然后当GtkPaned调整大小时,那个孩子会   与paned小部件一起展开或缩小。如果收缩是真的那么   该子项可以比用户的请求小。   将shrink设置为FALSE允许应用程序设置最小大小。   如果两个孩子的resize都为false,则将其视为   两个孩子的resize都是正确的

如果shrink设置为TRUE,那么笔记本电脑可以小于您要求的400x300尺寸。

要设置这些属性,请使用GtkPanned pack1pack2方法,而不是add1add2